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");
}
'ObservableCollection'跟蹤更改集合,未改變集合中的對象。要跟蹤單個對象中的更改,需要使其實現[INotifyPropertyChanged](http://msdn.microsoft.com/zh-cn/library/system.componentmodel.inotifypropertychanged.aspx)。如果您想在集合中的項目發生更改時引發CollectionChanged事件,則必須[自己添加該功能](http://stackoverflow.com/a/7713542/302677) – Rachel
這很好,謝謝。 – xnetdude
好的,我將該評論複製到了你的答案:) – Rachel