INotifyCollectionChanged
コレクション内の要素内のプロパティが変更された場合、要素全体がコレクションに追加または削除された場合にのみ、UIは更新されません。
したがって、要素全体の変更を追跡するだけで十分であれば、それ以上の粒度で十分であり、プロパティセッター内INotifyCollectionChanged
に実装する必要があります。INotifyPropertyChanged
注目に値するもう1つのポイントはObservableCollection
、リストを格納するためにを使用する場合、これはすでに実装されているというINotifiyCollectionChanged
ことです。
編集:
以下はマイクロソフトの見解です。
インターフェイスを実装する任意のコレクションを列挙できIEnumerable
ます。ただし、コレクションでの挿入または削除によってUIが自動的に更新されるように動的バインディングを設定するには、コレクションでINotifyCollectionChanged
インターフェイスを実装する必要があります。このインターフェイスは、基になるコレクションが変更されるたびに発生する必要があるイベントを公開します。
WPFは、インターフェイスObservableCollection(Of T)
を公開するデータコレクションの組み込み実装であるクラスを
提供しINotifyCollectionChanged
ます。
ソースオブジェクトからターゲットへのデータ値の転送を完全にサポートするには、バインド可能なプロパティをサポートするコレクション内の各オブジェクトもINotifyPropertyChanged
インターフェイスを実装する必要があることに注意してください。
独自のコレクションを実装する前に、、、、などの既存のコレクションクラスのいずれかを使用することを検討し
てObservableCollection(Of T)
ください。高度なシナリオがあり、独自のコレクションを実装する場合は、を使用することを検討してください。これにより、インデックスによって個別にアクセスできる非ジェネリックなオブジェクトのコレクションが提供され、最高のパフォーマンスが得られます。List(Of T)
Collection(Of T)
BindingList(Of T)
IList
から..
http://msdn.microsoft.com/en-us/library/ms752347.aspx#binding_to_collections