H.B*_*.B. 7 c# wpf observablecollection inotifycollectionchanged
我试图实现一个专门的集合,其工作就像ObservableCollection封装了一些更多的机制,为此我也让我的集合继承Collection而且我也实现了相同的接口.
我只是不知道如何实际实现整个集合 - 更改 - 逻辑,例如Collection<T>.Add没有被覆盖(它甚至没有标记为虚拟),那么如果使用该方法添加项目,如何ObservableCollection触发CollectionChanged事件?
Ani*_*Ani 10
要回答您的具体问题,请Collection<T>.Add调用InsertItem虚方法(在检查集合不是只读之后).ObservableCollection<T>确实会覆盖此方法以执行插入并引发相关的更改通知.
它通过调用InsertItem被覆盖的方式来实现,并且可以在反编译时看到
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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5472 次 |
| 最近记录: |