我有一个ObservableCollection
我的基础项目列表。我有2 CollectionViewSource
这是数据的不同过滤器。我想要发生在CollectionViewSource
中的任何变化。更新CollectionViewViewSource当ObservableCollection更改WP7
在我的视图模型构造函数中,我设置了过滤器谓词。然后我得到数据并将其添加到ObservableCollection
。我订阅了CollectionChanged
活动,并在那里刷新CVS。
虽然我看到一些非常奇怪的东西。这些项目不会出现在绑定到CVS的我的ListBox
中,否则会显示重复项。如果我在CollectionChanged
事件之外的CVS上拨打Refresh
后,我更改ObservableCollection
,一切似乎都正常。我真的很希望能够在集合更改时进行刷新,而不必担心每次执行刷新时都需要刷新刷新,以便更改它。
public MyViewModel()
{
oc.CollectionChanged += OcCollectionChanged;
cvs1.Source = oc;
cvs1.View.Filter = new Predicate<object>(...);
cvs2.Source = oc;
cvs2.View.Filter = new Predicate<object>(...);
foreach(var data in myData)
{
oc.Add(data);
}
}
private void OcCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
cvs1.View.Refresh();
cvs2.View.Refresh();
}
我所看到的是把刷新`CollectionChanged`事件的问题。如果我在更改集合后调用“刷新”,则看不到问题。这是一个知道的问题,或者我可以做些什么来解决这个问题?我可以在从ObservableCollection中添加/删除某些东西后手动调用Refresh,但是我不明白为什么从`CollectionChanged`事件中调用它时不应该起作用。 – 2011-04-15 16:23:13