gpt4 book ai didi

wpf - 在 WPF 中重新计算可绑定(bind)对象的聚合?

转载 作者:行者123 更新时间:2023-12-03 10:43:40 24 4
gpt4 key购买 nike

假设我有一个主数据库类,TvShowDatabase ,其中包含 Shows 的列表.每个ShowEpisodes 的列表,每个都有一个 Length .对象 TvShowDatabase , ShowEpisode全部实现INotifyPropertyChanged .

我想计算并显示 TotalViewingPotentialTvShowDatabase 的属性, 总和 Length每个 Episode每个 Show .

此外,假设用户正在以树的形式查看此结构,并且能够编辑 Length任何Show .当他们这样做时,TotalViewingPotential应相应更新,并在屏幕上看到结果。

我的问题:在 WPF 中(特别是使用 Prism for MVVM),为这些更改通知连接管道的最佳方法是什么?

我考虑过拦截添加到每个列表(使用 ObservableCollection )并给任何新项目一个 Parent .但是,这会变得困惑,最好采用自上而下的方法。

我见过超可观察集合(http://www.codeproject.com/Tips/694370/How-to-Listen-to-Property-Chang),但我担心这种方法会导致基于事件订阅的内存泄漏,而且它仍然需要大量的手动管道来提高 OnPropertyChanged(TotalViewingCollection)需要的事件。

有这种模式吗?

最佳答案

正如您所描述的,该任务有一个简单的解决方案。您不需要沿集合传播更改。

TotalViewingPotential 是一个普通的 INotifyPropertyChanged 属性。使其可以从您的 Length 属性中访问。

在 Length 属性的 setter 中,计算新值和旧值之间的差值,并按差值递增 TotalViewingPotential。

就这样。

为了加快初始加载,为了不为所有 Lengths 生成通知,您可以设置 Lengths 的支持字段的值,并根据 DB 中的值计算和设置 TotalViewingPotential。

关于wpf - 在 WPF 中重新计算可绑定(bind)对象的聚合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39261810/

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