ObservableCollection
コレクション内のオブジェクトへの変更ではなく、コレクションへの変更を追跡します。
個々のオブジェクトの変更を追跡するには、それらにINotifyPropertyChangedを実装させる必要があります。
また、コレクション内のアイテムが変更されたときにイベントを発生させたい場合CollectionChanged
は、次のようにその機能を自分で追加する必要があります。
public MyConstructor()
{
MyObservableCollection = new ObservableCollection<MyItem>();
MyObservableCollection.CollectionChanged += MyObservableCollection_CollectionChanged;
}
void MyObservableCollection_CollectionChanged(object sender, CollectionChangedEventArgs e)
{
if (e.NewItems != null)
{
foreach(MyItem item in e.NewItems)
{
MyItem.PropertyChanged += MyItem_PropertyChanged;
}
}
if (e.OldItems!= null)
{
foreach(MyItem item in e.OldItems)
{
MyItem.PropertyChanged -= MyItem_PropertyChanged;
}
}
}
void MyItem_PropertyChanged(object sender, PropertyChange e)
{
RaisePropertyChanged("MyObservableCollection");
}