2012-04-24 8 views
8

The MSDN reference page for ObservableCollection<T>ノート:。Binding Sources Overviewに記載されている要件を満たさなければならないあなたのコレクションでObservableCollection <T>を使用する場合、タイプTにINotifyPropertyChangedを実装する必要がありますか?

」オブジェクトは特に、あなたがOneWayTwoWayを使用している場合(たとえば、あなたはあなたのUIを更新するときに、ソースのプロパティを動的に変更する場合)、INotifyPropertyChangedインターフェイスなどの適切なプロパティ変更通知メカニズムを実装する必要があります。 ObservableCollection<T>以来

はすでに、なぜ私は再びまたTINotifyPropertyChangedを実装する必要があります、INotifyPropertyChanged実装しますか?

答えて

7

観察可能なコレクションをテーブルのデータソースとして考えてください。コレクションの各オブジェクトは1つの行を占め、複数の列にまたがって表に表示されます。

ビュー(すなわち、あなたのテーブル)は、オブジェクトのプロパティの変更に応答して各セルをいつ変更するかを知る必要があります。また、オブジェクトをコレクションに追加したり、コレクションから削除したりする必要があります。

観察可能なコレクションはテーブル行を処理します。オブジェクトが挿入、削除、移動などを行ったときにオブザーバーに通知します。しかし、それは個々のオブジェクトで何が起こっているかの知識が不足しているので、テーブルの列を扱うのは役に立たない。

これはオブジェクトを入力する場所です。INotifyPropertyChangedを実装することで、テーブルで列のデータを管理できます。

+0

大きなコジェントの説明。簡潔かつ明確です。 +1 – TripleAntigen

3

INotifyPropertyChangedは、プロパティが変更されているオブジェクトによって上げられる必要があります。 ObservableCollectionは、そのオブジェクトに含まれるオブジェクトの変更を検出し、それに代わって変更を渡すことはできません。

コレクションがINotifyPropertyChangedを実装する理由は特に有用ではありません。私は、アイテムがコレクションに追加/削除されるときに変更されるコレクションのCountプロパティの変更イベントを発生させるだけと思われます。

アイテムの追加/削除のみに興味がある場合は、このインターフェイスをクラスに実装する必要はありません。しかし、あなたのUIがオブジェクトのプロパティにバインドされている場合は、UIを反応させたい場合は、それを実装する必要があります。