我有一个MasterPage UserControl,其中包含3个用户控件(和3个视图模型)
MasterView:
-> MenuView (-> MenuViewModel )
-> InfoView (-> InfoViewModel )
-> SliderView (-> SliderViewModel )
在滑块视图中,我得到一个列表框,其中SelectedItem属性绑定到视图模型中的SelectedItem属性(SliderViewModel)
当SelectedItem发生变化时,我想将它一直冒泡到InfoViewModel并更新InfoView。
我可以用我在winforms中多次做过的事件来做,但我正在寻找mvvm模式的最佳实践方式。
另一个小问题是,我是否应该为MasterView页面创建一个viewmodel?虽然除了将3个用户控件组合在一起之外它不包含任何内容。
非常感谢您的帮助
答案 0 :(得分:0)
我不确定这个场景中最好的MVVM最佳实践,但我可以想到通过MVVM实现它的一种方法。
您可以创建MasterViewModel
并在masterViewModel中公开属性,以便在其他视图模型之间进行通信。如下所示
class MasterViewModel
{
MenuViewModel;
InfoViewModel;
SliderViewModel;
public CommunicationProperty
{
set
{
InforViewModel.SomeProperty = value;
}
}
}
class SliderViewModel
{
pubic SliderViewModel(MasterViewModel masterViewModel)
{
//hold reference of master view model in a variable
}
public SelectedItem
{
set
{
// change the info view model via master view model
masterViewModel.CommunicationProperty = value;
}
}
}
答案 1 :(得分:0)
选项很少:
WPF有许多新概念,但仍然通过事件与业务逻辑进行通信。