3

在 WPF 应用程序中使用 MVVMLight 工具包。
我有一个封装应用程序设置的 ViewModel 类,以及一个允许用户更改它们的相应视图。设置存储在注册表中。

我在主视图中添加了一些状态指示器,以反映某些设置是打开还是关闭。将这些可见性绑定到 MainViewModel 中的属性是有意义的。
是否可以将 MainViewModel 中的属性绑定到 SettingsViewModel 中的属性,或者我应该使用消息告诉 MainViewModel SettingsViewModel 中的某些内容发生了变化?
感谢您的任何建议...

4

2 回答 2

3

一种简单的方法是通过将 SettingsViewModel 公开为 MainViewModel 上的属性,如下所示:

Public SettingsViewModel Settings
{
    get
    {
       return settingsViewModel;
    }
}

然后在您的 MainView.xaml 中,您的绑定可以执行以下操作:

"{Binding Path=Settings.ASettingOnTheSettingsVM}"
于 2013-10-21T14:13:01.697 回答
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
}
于 2013-10-21T14:04:08.947 回答