我有一个DataGrid
绑定到ICollectionView
(过滤器打开)。更具体地说,我设置了view.Filter = SomeFilteringFunction
,它使用public DateTime DateFrom { get... set... }
属性,还绑定到DatePicker
。
好吧,现在,当我更改DatePicker
时,绑定属性DateFrom
已正确更改,但数据网格显然没有重新筛选。
如何通知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();