.net 如何在WPF数据网格中为整个列而不是一个单元格发出通知?
我有一个不寻常的要求。我有一个5行的WPF数据网格。如果我更改了ColumnB下的任何单元格,则应通知ColumnB下的所有行 现在,在更新ColumnB下的一个单元格后,只有该单元格得到更新,如果双击ColumnB下的任何其他单元格并进入编辑模式,则只会显示新值.net 如何在WPF数据网格中为整个列而不是一个单元格发出通知?,.net,wpf,datagrid,wpfdatagrid,.net,Wpf,Datagrid,Wpfdatagrid,我有一个不寻常的要求。我有一个5行的WPF数据网格。如果我更改了ColumnB下的任何单元格,则应通知ColumnB下的所有行 现在,在更新ColumnB下的一个单元格后,只有该单元格得到更新,如果双击ColumnB下的任何其他单元格并进入编辑模式,则只会显示新值 如果一行已更新,如何强制所有行上的RaiseProperty更改?通常我会在包含DataGrid的ItemsSource的codebehind中执行此操作 下面是一个粗略的例子: MyObservableCollection.Coll
如果一行已更新,如何强制所有行上的RaiseProperty更改?通常我会在包含DataGrid的ItemsSource的codebehind中执行此操作 下面是一个粗略的例子:
MyObservableCollection.CollectionChanged += MyObservableCollection_CollectionChanged;
...
void MyObservableCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
// Attach PropertyChange event to item
if (e.NewItems != null)
foreach (SomeDataItem item in e.NewItems)
item.PropertyChanged += SomeDataItem_PropertyChanged;
if (e.OldItems != null)
foreach (SomeDataItem item in e.OldItems)
item.PropertyChanged -= SomeDataItem_PropertyChanged;
}
private bool shouldUpdate = true;
void SomeDataItem_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
// If PropertyChanged raised on ColumnB, and shouldUpdate flag is true
if (e.PropertyName == "ColumnB" && shouldUpdate)
{
// Disable updating all collections to prevent infinite looping
shouldUpdate = false;
foreach (SomeDataItem item in e.NewItems)
{
// If this isn't the current item, raise a PropertyChanged event on ColumnB
if (item != sender)
item.RaisePropertyChanged(e.PropertyName);
}
// Reenable updating all collections
shouldUpdate = true;
}
}
谢谢你,瑞秋。我最终使用了CollectionView.Refresh()。但这更像是一种黑客行为,可能并不适用于所有解决方案。谢谢你的解决方案