在C#</t>中包装ObservableCollection <t>

时间:2011-12-02 00:15:40

标签: c# observablecollection containment

I have reasonObservableCollection<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的实现,而不是自己重新实现它?

1 个答案:

答案 0 :(得分:5)

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

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

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