c# – 通知WPF DataGrid更改

我有一个绑定到ICollectionView的DataGrid(带过滤器).更具体地说,我设置了view.Filter = SomeFilteringFunction,它使用公共DateTime DateFrom {get … set …}属性,也绑定到DatePicker.

好吧,现在,当我更改DatePicker时,绑定属性DateFrom被正确更改,但DataGrid显然没有被重新过滤.

如何通知DataGrid更新自身的最正确方法是什么?

先感谢您!

詹姆士

解决方法:

您不应该直接绑定到ICollectionView,而是绑定到源集合,然后将过滤器应用于CollectionViewSource.GetDefaultView返回的ICollectionView.

<DataGrid ItemsSource="{Binding MyCollection}" />
// should raise INotityPropertyChange.PropertyChanged
public ObservableCollection<Entity> MyCollection { get; set; }

MyCollection = new ObservableCollection<Entity>(ctx.EntitySet)); 
ICollectionView view = CollectionViewSource.GetDefaultView(MyCollection);
view.Filter = SomeFilteringFunction;

然后,当DatePicker的值发生更改时,您需要告知ICollectionView更新.

ICollectionView view = CollectionViewSource.GetDefaultView(MyCollection);
view.Refresh();
上一篇:javascript – 如何在Dojo中保存过滤器


下一篇:c# – WPF / Xaml将DataGrid列标题和单元格绑定到不同的值