INotifyPropertyChanged:通知另一个类

2024-02-20

我有一堂课(我们称之为MyContainerClass)这是其他几个类的容器(我们称它们为ClassA to ClassF). ClassA to ClassF继承相同的基类(我们称之为MyBaseClass). In MyBaseClass我有一个名为 int 的属性Count, 哪个ClassA to ClassF继承。我还有一个同名的 int 属性MyContainerClass这是ClassA to ClassF.

然后我有一个数据网格,每一行都有一个对象MyContainerClass。网格的列显示ClassA to ClassF。网格中的最后一列显示总计(即它绑定了Count的财产MyContainerClass)。现在我希望一旦我更改最后一列中的总数即可更新CountA-F 范围内任何级别的属性。我实现了 INotifyPropertyChangedMyBaseClass当我改变它时它会触发Count财产在ClassA to ClassF。但我的数据网格中的最后一列保持不变。有什么线索吗?

EDIT: I have created a class diagram. enter image description here

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


刚刚实施INotifyPropertyChanged不足以自动更新。这MyContainerClass对象需要“订阅”对象的更改通知MyBaseClass其他列中的对象。处理此问题的一种方法是将如下方法添加到MyContainerClass:

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

INotifyPropertyChanged:通知另一个类 的相关文章

随机推荐