【发布时间】:2016-08-01 10:06:28
【问题描述】:
所以基本上我有三个视图模型。一种是实时存储和计算所有数据的 ShellViewModel。还有另外两个以不同方式显示计算的视图模型。这两个 VM 在 shell 视图中显示为视图(通过 caliburn 容器和与 ContentControl 绑定的 ActiveItem)。为了将数据发送到其他 VM,我将它们的属性绑定到 shell VM 的属性,方法是将它们发送到第二个 VM 的构造函数中。
VM = new ViewModelA(_PropertyOfShellVM);
//---
ViewModelA(PropertyOfShellVM p)
{
VMProp = p;
}
属性是来自没有通知功能的 dll 中的类。作为参考类型,VM 中的类是相同的。在其他虚拟机中,我绑定到这些类属性。
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 中编写通知,但没有任何效果。我还尝试在自定义事件上重新绑定 VM 属性,我通过 Caliburn 的事件管理器发送了新结果,但它太慢了(我让这些值每秒更改多次,但事件大约每 3 次更新 UI秒)。通知如何修复?
【问题讨论】:
标签: c# wpf mvvm data-binding caliburn