我有一個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