I have reason将ObservableCollection<T>
的实例包装成另一种类型。
我正在我的新类型中实施ICollection<T>
。这很简单。我也在实施INotifyCollectionChanged
,这意味着实施
public event NotifyCollectionChangedEventHandler CollectionChanged;
我能想到实现这一目标的最佳途径是在ICollection<T>
的实现中添加其他代码,如下所示:
public void Add(T item)
{
Collection.Add(item);
if (CollectionChanged != null) CollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, item));
}
(集合是我正在包装的ObservableCollection<T>
的实例。)
有没有办法利用Collection提供的INotifyCollectionChanged
的实现,而不是自己重新实现它?
答案 0 :(得分:5)
是。当您指定Collection
属性或字段的值时,请处理其 CollectionChanged事件:
Collection = new ObservableCollection<T>();
Collection.CollectionChanged += this.HandleCollectionChanged;
然后在HandleCollectionChanged方法中,引发对象自己的CollectionChanged事件。