我正在使用WPF并且有一个名为eg的自定义类。 “CustomClass”以这种方式使用observablecollection。我们有一个绑定到这个OC的数据网格,效果很好,数据显示一切都很好但是当observablecollection中的任何项目更新时,底层网格不会相应更新。
以前我们一直在使用实体数据模型中的类型创建observablecollections,这很好用(显示/更新等),但在使用自定义类时则不行。
我们的自定义类中是否应该支持接口或某些内容以允许更新发生?
感谢。
詹姆斯。
答案 0 :(得分:1)
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");
}