需要帮助:DataGridCheckBoxColumn 双向工作只能单向
Need help: DataGridCheckBoxColumn two-way works only one-way
我(..仍在学习 wpf..)制作了一个 DataGrid,第一列显示信号是否启用。
在xaml中:
<DataGrid.Columns> ...
<DataGridCheckBoxColumn Width ="30" Header="" IsReadOnly="False" Binding="{Binding IsEnabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataGrid.Columns>
DataGrid的ItemSouce已正确设置并与ObservableCollection<Signal> signalList
列表中的数据绑定。一切都正确显示在 DataGrid 中。所以这里从 signalList 到 DataGrid 的绑定工作正常。
另一方面,我希望每次更改 signalList 时,DataGrid 都可以自动更新。但是,如果我这样做
signalList[0].IsEnabled = true;
DataGrid 没有得到更新。找了很多还是没找到答案
我错过了什么吗?谢谢
编辑1:
DataGrid 确实得到更新,只有当我单击另一行,然后将滚动条拉到看不见的地方时。然后,如果我向后拉动滚动条,该行就会正确显示。我想我肯定错过了什么,有人可以给我提示吗?
我在 Aybe 和 gavin 的帮助下解决了这个问题。作为记录,我在这里添加我的代码:
class 信号:INotifyPropertyChanged
{
...
private bool isEnabled;
public bool IsEnabled
{
get { return isEnabled; }
set { isEnabled = value; OnPropertyChanged(new PropertyChangedEventArgs("IsEnabled"));}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
PropertyChanged(this, e);
}
}
我(..仍在学习 wpf..)制作了一个 DataGrid,第一列显示信号是否启用。
在xaml中:
<DataGrid.Columns> ...
<DataGridCheckBoxColumn Width ="30" Header="" IsReadOnly="False" Binding="{Binding IsEnabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataGrid.Columns>
DataGrid的ItemSouce已正确设置并与ObservableCollection<Signal> signalList
列表中的数据绑定。一切都正确显示在 DataGrid 中。所以这里从 signalList 到 DataGrid 的绑定工作正常。
另一方面,我希望每次更改 signalList 时,DataGrid 都可以自动更新。但是,如果我这样做
signalList[0].IsEnabled = true;
DataGrid 没有得到更新。找了很多还是没找到答案
我错过了什么吗?谢谢
编辑1:
DataGrid 确实得到更新,只有当我单击另一行,然后将滚动条拉到看不见的地方时。然后,如果我向后拉动滚动条,该行就会正确显示。我想我肯定错过了什么,有人可以给我提示吗?
我在 Aybe 和 gavin 的帮助下解决了这个问题。作为记录,我在这里添加我的代码:
class 信号:INotifyPropertyChanged
{
...
private bool isEnabled;
public bool IsEnabled
{
get { return isEnabled; }
set { isEnabled = value; OnPropertyChanged(new PropertyChangedEventArgs("IsEnabled"));}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
PropertyChanged(this, e);
}
}