0

我正在使用 WPF 并有一个名为 eg 的自定义类。以这种方式使用的“CustomClass”是observablecollection。我们有一个绑定到这个 OC 的数据网格,它工作得很好,显示数据并且一切都很好,但是当 observablecollection 中的任何项目被更新时,底层网格不会相应地更新。

以前我们一直在直接使用实体数据模型中的类型创建 observablecollections,这很有效(显示/更新等),但在使用自定义类时却不行。

在我们的自定义类中是否有一个接口或我们应该支持的东西来允许更新发生?

谢谢。

詹姆士。

4

1 回答 1

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");
}
于 2013-02-08T13:10:36.277 回答