2010-08-26 41 views
0

我正在查看ObservableCollection代碼(感謝awsome .NET Reflector),並驚奇地發現Add和Remove方法未被覆蓋。那麼ObservableCollection如何在PropertyChanged或CollectionChanged事件添加或刪除時通知其通知?ObservableCollection如何工作?

回答

2

它覆蓋了一系列受保護的基礎集合的方法<T>類,例如, InsertItem(INT指數,T項目),的removeItem(INT指數)等

這些覆蓋特別提高事件:

protected override void InsertItem(int index, T item) 
{ 
    this.CheckReentrancy(); 
    base.InsertItem(index, item); 
    this.OnPropertyChanged("Count"); 
    this.OnPropertyChanged("Item[]"); 
    this.OnCollectionChanged(NotifyCollectionChangedAction.Add, item, index); 
} 
+0

DUH!謝謝。我注意到Collections.InsertItem被覆蓋,但是我沒有檢查到base.Add方法調用了虛擬的InsertItem方法。 – Fragilerus 2010-08-26 17:05:27

相關問題