【发布时间】:2011-06-21 00:48:56
【问题描述】:
我有一个视图,上面有 2 个子视图,每个视图都分配了一个 ViewModel:
ViewA - ViewModelA
{
ViewB - ViewModelB
ViewC - ViewModelC
}
ViewB 有一个文本框,ViewC 有一个组合框,我需要从 ViewModelA 访问这两个框。不是 GUI 控件本身,而是绑定值,即文本框的 .Text 和 ComboBox 的 .SelectedItem。目前我只是将 ViewModelB 和 ViewModelC 作为 ViewModelA 上的属性,但感觉不对。
在不破坏 MVVM 模式的情况下,视图模型相互通信的标准方式是什么?
【问题讨论】:
-
ViewModelB 有一个文本框,而 ViewModelC 有一个组合框...如果我从字面上理解,你已经打破了 MVVM 模式。 ViewModel 不引用 WPF 控件,它们公开绑定到视图中控件的依赖属性的属性。 VM 可以为了绑定到它们的 View 的利益而公开属性,但它们应该不知道这些 View 的性质(或存在)。
-
哎呀,我的意思是 ViewB 有一个文本框,而 ViewC 有一个组合框,我会修复它。