多个网络来源告诉我们,在 MVVM 中,视图和视图模型之间的通信/同步应该通过依赖属性进行。如果我理解正确,视图的依赖属性应该使用双向绑定将其绑定到视图模型的属性上。现在,类似的问题以前已经被问过了,但没有得到足够的答案。
在我开始分析这个相当复杂的问题之前,这是我的问题:
如何将自定义视图的 Dependency Property 与视图模型的属性同步?
在理想的情况下,您可以简单地将其绑定为:
这不起作用,因为
一种解决方案是定义一个基类
在我开始分析这个相当复杂的问题之前,这是我的问题:
如何将自定义视图的 Dependency Property 与视图模型的属性同步?
在理想的情况下,您可以简单地将其绑定为:
<UserControl x:Class="MyModule.MyView" MyProperty="{Binding MyProperty}">
这不起作用,因为
MyProperty
不是UserControl
的成员。我尝试了不同的方法,但都没有成功。一种解决方案是定义一个基类
UserControlEx
,具有必要的依赖属性以使上述工作。然而,这很快变得非常混乱。不够好!
DataContext
而不是父级(实例化它的地方)的DataContext
? - l33tMyProperty
)是 UserControl 类 MyView 中的依赖属性。绑定源属性(绑定声明中的第二个MyProperty
)是 ViewModel 类中的属性,通常是实现INotifyPropertyChanged
的类中的 CLR 属性。 - ClemensViewModelString
属性中省略对旧值和新值的比较。 - Clemens