INotifyPropertyChanged:通知另一个类

Pet*_*ter 5 data-binding wpf datagrid inotifypropertychanged

我有一个类(我们称之为MyContainerClass)是对其他几类的容器(让我们称他们ClassAClassF)。ClassAClassF继承相同的基类(姑且称之为MyBaseClass)。在MyBaseClass我有名字一个int属性Count,这 ClassAClassF继承。我也有一个同名的int属性,MyContainerClass它是ClassAto 的总和ClassF

然后我有一个数据网格,每一行都有一个对象MyContainerClass。网格的列显示ClassAClassF。网格的最后一列显示总计(即,其Count属性为MyContainerClass)。现在,我希望Count在AF范围内的任何类别中更改属性后,最后一列的总数都会更新。我实现INotifyPropertyChanged的中MyBaseClass,当我改变它火Count属性中 ClassAClassF。但是我的数据网格中的最后一列保持不变。有什么线索吗?

编辑: 我创建了一个类图。在此处输入图片说明

getCount()方法返回objA.Count + objB.Count + ... + objF.Count,并由中的Count属性返回MyContainerClass。问题是:如果我更新objA.Count,我希望GUI(即我的数据网格中的列)显示更新后的总和。

Ere*_*mez 4

INotifyPropertyChanged对于自动更新来说,仅仅实施是不够的。该对象需要“订阅”其他列中对象MyContainerClass的更改通知。MyBaseClass处理此问题的一种方法是将如下方法添加到MyContainerClass

void SubscribeToCount(MyBaseClass item)
{
    item.PropertyChanged += (s,e) => 
        this.Sum += (e.NewValue - e.OldValue); 
}
Run Code Online (Sandbox Code Playgroud)

您可以为其他列中的所有对象调用此方法。(问题并不清楚,但我假设有一个包装类,其中包含MyClassA-F和的实例MyContainerClass,您将数据网格绑定到该包装类的集合)。