デフォルトでItemsSource
は、はタイプIEnumerable
です。最初にイベントにアクセスできるタイプにキャストしてから、CollectionChanged
そのイベントのハンドラーを追加する必要があります。
((INotifyCollectionChanged)List1.ItemsSource).CollectionChanged +=
new NotifyCollectionChangedEventHandler(List1CollectionChanged);
public void List1CollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
{
// Your logic here
}
注:
INotifyCollectionChanged
私の例ではにキャストしましたが、実際にはそれを実装する任意のオブジェクトにキャストできます。ただし、ベストプラクティスとして、必要なメソッド/プロパティ/イベントにアクセスできる最も一般的なタイプにキャストする必要があります。したがって、にキャストすること
はできObservableCollection
ますが、キャストする必要はありません。
INotifyCollectionChanged
必要なイベントが含まれており、それを実装する他のタイプのコレクションを使用することにした場合でも、これは引き続き機能します。一方、キャストすると、ある日、リストがこれよりも
ObservableCollection
タイプになっていると判断した場合に、
MyOwnTypeOfObservableCollectionNotDerivedFromObservableCollection
壊す。;)
PSこれはxamlコードビハインドに含める必要があります。