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>(コレクションは、私がラップしているインスタンスです)。

INotifyCollectionChangedコレクションを自分で再実装するのではなく、コレクションが提供する実装を活用する方法はありますか?

4

1 に答える 1

5

はい。Collectionプロパティまたはフィールドの値を割り当てるときは、そのCollectionChangedイベントを処理します。

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

次に、HandleCollectionChangedメソッドで、オブジェクト自体のCollectionChangedイベントを発生させます。

于 2011-12-02T00:22:30.563 に答える