有一種方法可以在將項目添加到ObservableCollection時觸發事件,但在刪除項目時不會觸發事件?ObservableCollection事件添加但未刪除的項目
我相信沒有一個實際的事件,但也許是一種過濾CollectionChanged事件的方法?
有一種方法可以在將項目添加到ObservableCollection時觸發事件,但在刪除項目時不會觸發事件?ObservableCollection事件添加但未刪除的項目
我相信沒有一個實際的事件,但也許是一種過濾CollectionChanged事件的方法?
子類ObservableCollection類和創建自己的ItemAdded事件應該工作,我會想。
public class MyObservableCollection<T> : ObservableCollection<T>
{
public event EventHandler<NotifyCollectionChangedEventArgs> ItemAdded;
public MyObservableCollection()
{
CollectionChanged += MyObservableCollection_CollectionChanged;
}
void MyObservableCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (e.Action == NotifyCollectionChangedAction.Add)
ItemAdded(sender, e);
}
}
如果子類化,最好重寫'OnCollectionChanged()'方法來添加這個邏輯。這會阻止客戶端代碼刪除處理程序。 – 2013-02-24 20:50:28
的CollectionChanged
事件包括諸如關於收集執行什麼動作(例如,添加或刪除),並影響了什麼項目。
只需在您的處理程序中添加一個檢查,以僅在執行Add
時執行所需的操作。
ObservableCollection<T> myObservable = ...;
myObservable.CollectionChanged += (sender, e) =>
{
if (e.Action == NotifyCollectionChangedAction.Add)
{
// do stuff
}
};
爲什麼不使用List並手動處理NotifyPropertyChange? – 2013-02-24 19:35:34
我可以創建一個自定義類,繼承List,並將該事件添加到Add()和AddRange()? – Wilson 2013-02-24 19:37:07