MSDNからOnCollectionChangedについて:アイテムが追加、削除、変更、移動、またはリスト全体が更新されたときに発生します。C#ObservableCollection OnCollectionChangedはアイテムが変更されたときに起動しません。
私のコレクションにあるobjに接続されているプロパティを変更していますが、OnCollectionChangedは起動されていません。私は、objクラスのiNotifyPropertyChangedを実装しています。
public class ObservableBatchCollection : ObservableCollection<BatchData>
{
protected override void OnCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if(e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
{
foreach (BatchData item in e.NewItems)
{
}
}
base.OnCollectionChanged(e);
}
public ObservableBatchCollection(IEnumerable<BatchData> items)
: base(items)
{
}
}
私には、オブジェクトのプロパティなど、コレクションのアイテムが変更されたときに、このイベントが発生することがわかります。しかし、そうではありません。カスタムコレクションのアイテムがいつ変更されるのかを知りたいので、必要に応じてそのコレクションの計算を実行できます。
どのような考えですか?
これは、「変更された」とは、古いアイテムを変更しないで 'collection [i] = newItem;'を実行することを意味します。 – CodeNaked
ああ。ドキュメントは私には少し不明です。 "...アイテムが変更されたとき..."とは、私には、アイテムが変更されたときを意味します。 Hehe。皆さんありがとう。 – Yatrix
あなたは正しいです - それは間違って言われているので不明です。 "アイテムが追加、削除、変更された、移動された、またはリスト全体がリフレッシュされたときに発生する" - コンマの配置は、アイテムを追加したとき(項目があるとき)削除されたとき、(アイテムがあるとき)変更されたとき、(アイテムが移動されたときに)移動されたとき、またはリスト全体が更新されたとき)。 –