在WPF应用程序中使用MVVMLight工具包 我有一个ViewModel类,它封装了应用程序的设置,以及一个相应的View,允许用户更改它们。设置存储在注册表中。
我在主视图中添加了一些状态指示符,以反映某些设置是打开还是关闭。将它们的可见性绑定到MainViewModel中的属性是有意义的
是否可以将MainViewModel中的属性绑定到SettingsViewModel中的属性,或者我应该使用消息告诉MainViewModel在SettingsViewModel中发生了哪些更改?
谢谢你的任何建议......
答案 0 :(得分:3)
一种简单的方法,通过将SettingsViewModel作为MainViewModel上的属性公开,如下所示:
Public SettingsViewModel Settings
{
get
{
return settingsViewModel;
}
}
然后在您的MainView.xaml中,您的绑定可以执行此操作:
"{Binding Path=Settings.ASettingOnTheSettingsVM}"
答案 1 :(得分:0)
如果您的SettingsViewModel
已从MainViewModel
启动并且您已实施INotifyPropertyChanged
界面,那么您只需收听SettingsViewModel.PropertyChanged
事件:
在MainViewModel
:
SettingsViewModel settingsViewModel = new SettingsViewModel();
settingsViewModel.PropertyChanged = SettingsViewModel_PropertyChanged;
...
private void SettingsViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
// Monitor property changes here
}