【问题标题】:Observablecollection of custom class not updating自定义类的 Observablecollection 未更新
【发布时间】:2013-02-07 19:32:26
【问题描述】:
我正在使用 WPF 并有一个名为例如的自定义类。以这种方式使用的“CustomClass”是observablecollection。我们有一个绑定到这个 OC 的数据网格,它工作得很好,显示数据并且一切都很好,但是当 observablecollection 中的任何项目被更新时,底层网格不会相应地更新。
以前我们一直使用实体数据模型中的类型直接创建 observablecollections,这很有效(显示/更新等),但在使用自定义类时却不行。
在我们的自定义类中是否应该支持接口或某些东西以允许更新发生?
谢谢。
詹姆斯。
【问题讨论】:
标签:
wpf
xaml
observablecollection
【解决方案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");
}