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");
}