2

我有理由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>我包装的实例)。

有没有办法利用INotifyCollectionChangedCollection 提供的实现,而不是自己重新实现它?

4

1 回答 1

5

是的。当您分配Collection属性或字段的值时,请处理CollectionChanged 事件:

Collection = new ObservableCollection<T>();
Collection.CollectionChanged += this.HandleCollectionChanged;

然后在 HandleCollectionChanged 方法中,引发对象自己的 CollectionChanged 事件。

于 2011-12-02T00:22:30.563 回答