Wpf MVVM:将ViewModel中的属性绑定到其他VM中的属性?
在WPF应用程序中使用MVVMLight工具包。Wpf MVVM:将ViewModel中的属性绑定到其他VM中的属性?,wpf,mvvm-light,Wpf,Mvvm Light,在WPF应用程序中使用MVVMLight工具包。 我有一个封装应用程序设置的ViewModel类,以及一个允许用户更改设置的相应视图。这些设置存储在注册表中 我在主视图中添加了一些状态指示器,以反映某些设置是打开还是关闭的。将这些属性的可见性绑定到MainViewModel中是有意义的。 是否可以将MainViewModel中的属性绑定到SettingsViewModel中的属性,或者是否应该使用消息通知MainViewModel SettingsViewModel中发生了更改? 谢谢你的建议
我有一个封装应用程序设置的ViewModel类,以及一个允许用户更改设置的相应视图。这些设置存储在注册表中 我在主视图中添加了一些状态指示器,以反映某些设置是打开还是关闭的。将这些属性的可见性绑定到MainViewModel中是有意义的。
是否可以将MainViewModel中的属性绑定到SettingsViewModel中的属性,或者是否应该使用消息通知MainViewModel SettingsViewModel中发生了更改?
谢谢你的建议 如果您的
设置查看模型
是从MainViewModel
启动的,并且您已经实现了INotifyPropertyChanged
界面,那么您可以只听设置查看模型。PropertyChanged
事件:
在MainViewModel
中:
SettingsViewModel settingsViewModel = new SettingsViewModel();
settingsViewModel.PropertyChanged = SettingsViewModel_PropertyChanged;
...
private void SettingsViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
// Monitor property changes here
}
一种简单的方法是将SettingsViewModel作为MainViewModel上的属性公开,如下所示:
Public SettingsViewModel Settings
{
get
{
return settingsViewModel;
}
}
然后,在MainView.xaml中,绑定可以执行以下操作:
"{Binding Path=Settings.ASettingOnTheSettingsVM}"
谢谢,这就是我所做的。由于SettingsView绑定到SettingsView模型,因此我必须为SettingsView添加一些要绑定到的xxxTemp属性。当用户在SettingsView上单击“保存”时,持久化属性(MainView控件绑定到的属性)会得到更新。这是一个有用的解决方案,但这不会破坏MVVM模式吗?只是一个想法。。。