gpt4 book ai didi

wpf - INotifyPropertyChanged:通知另一个类

转载 作者:行者123 更新时间:2023-12-04 20:15:30 27 4
gpt4 key购买 nike

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

然后我有一个数据网格,每一行都有一个 MyContainerClass 的对象.网格的列显示 ClassAClassF .网格中的最后一列显示总数(即它绑定(bind)了 CountMyContainerClass 属性)。现在,我希望在更改 Count 后立即更新最后一列中的总数。在 A-F 范围内的任何类别中的属性。我在 MyBaseClass 中实现了 INotifyPropertyChanged当我更改 Count 时它会触发位于 ClassA 的属性(property)至ClassF .但是我的数据网格中的最后一列保持不变。有什么线索吗?

编辑:
我创建了一个类图。 enter image description here

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

最佳答案

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

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

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

关于wpf - INotifyPropertyChanged:通知另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13376328/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com