我有一个View,它有2个子视图,ViewModel分配给每个视图:
ViewA - ViewModelA
{
ViewB - ViewModelB
ViewC - ViewModelC
}
ViewB有一个文本框,ViewC有一个组合框,我需要从ViewModelA访问这两个组合框。不是GUI控件本身,而是绑定值,即文本框的.Text和ComboBox的.SelectedItem。目前我只将ViewModelB和ViewModelC作为ViewModelA的属性,但感觉不对。
视图模型在不破坏MVVM模式的情况下相互通信的标准方法是什么?
答案 0 :(得分:12)
将断开连接的ViewModel相互通信的一种方法是使用发布/订阅机制,例如PRISM s EventAggregator。但是,在父/子ViewModel关系中,我认为父母可以直接了解和控制子ViewModel。
就我个人而言,我不认为从其他ViewModel中构造ViewModel是一种不好的做法。我一直这样做。我的ViewModels中有I generally favor composition over inheritance。
答案 1 :(得分:3)
ViewModels通常从模型“继承”关系。在有意义的情况下添加关系并没有错。
ViewModel具有引用另一个ViewModel的属性是完全可以的。