gpt4 book ai didi

c# - WPF 通知不适用于多个 View 模型

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

所以基本上我有三个 View 模型。一种是实时存储和计算所有数据的 ShellViewModel。还有另外两个以不同方式显示计算的 View 模型。这两个 VM 在 shell View 中显示为 View (通过 caliburn 容器和与 ContentControl 绑定(bind)的 ActiveItem)。为了将数据发送到其他 VM,我将它们的属性绑定(bind)到 shell VM 的属性,方法是将它们发送到第二个 VM 的构造函数中。

VM = new ViewModelA(_PropertyOfShellVM);
//---
ViewModelA(PropertyOfShellVM p)
{
VMProp = p;
}

这些属性是来自没有通知功能的 dll 中的类。作为引用类型,VM 中的类是相同的。在其他虚拟机中,我绑定(bind)到这些类属性。
class PropertyOfShellVM
{
bool PropertyA{get;set;}
int PropertyB{get;set;}
}

<CheckBox Content="PropA" IsChecked="{Binding VMProp.PropertyA}"/>
<Slider Value="{Binding VMProp.PropB}"/>

问题是这些类经常变化并且需要不断更新。但是当使用 Caliburn 的 NotifyOfPropertyChange(()=>VMProp) 时,UI 不会更新。我尝试在属性 getter 中编写通知,但没有任何效果。我还尝试在自定义事件上重新绑定(bind) VM 属性,我通过 Caliburn 的事件管理器发送了新结果,但它太慢了(我让这些值每秒更改多次,但事件大约每 3 次更新 UI秒)。如何修复通知?

最佳答案

您可能想使用 Caliburn.Micro's Event Aggregator将更改从一个 View 模型传递到另一个 View 模型。不过,我不确定它如何影响性能。

关于c# - WPF 通知不适用于多个 View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38696128/

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