C# WPF、MVVM、MasterDetailPage
我得到了一个MasterPage用户控件,其中包含3个用户控件和3个viewmodelsC# WPF、MVVM、MasterDetailPage,c#,wpf,mvvm,C#,Wpf,Mvvm,我得到了一个MasterPage用户控件,其中包含3个用户控件和3个viewmodels MasterView: -> MenuView (-> MenuViewModel ) -> InfoView (-> InfoViewModel ) -> SliderView (-> SliderViewModel ) 在slider视图中,我得到了一个列表框,其中SelectedItem属性绑定到视图模型SliderViewModel中的SelectedIt
MasterView:
-> MenuView (-> MenuViewModel )
-> InfoView (-> InfoViewModel )
-> SliderView (-> SliderViewModel )
在slider视图中,我得到了一个列表框,其中SelectedItem属性绑定到视图模型SliderViewModel中的SelectedItem属性
当SelectedItem发生更改时,我希望将其一直冒泡到InfoViewModel并更新InfoView
我可以像在winforms中那样多次处理事件,但我正在寻找mvvm模式的最佳实践方式
另一个小问题是,我是否也应该为MasterView页面创建viewmodel?尽管它除了将3个用户控件组合在一起之外没有任何内容
非常感谢您的帮助我不确定此场景中的最佳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;
}
}
}
没有多少选择:
您可以在视图中将SelectedItem声明为依赖项属性
模型类,如果它是从DependencyObject继承的
您可以将SelectedItem声明为常规属性,并使您的视图成为模型
类来实现INotifyPropertyChanged接口和fire
setter中的PropertyChanged事件。
WPF有很多新概念,但仍然通过事件与业务逻辑通信