2013-10-21 117 views
2

在一個WPF應用程序使用MVVMLight工具包。
我有一個封裝應用程序的設置的ViewModel類,以及相應的視圖,允許用戶改變他們。這些設置存儲在註冊表中。MVVM:將ViewModel中的屬性綁定到不同VM中的屬性?

我加入了一些狀態指示器主視圖,以反映一些設置是否被切換或關閉。將它們的可見性綁定到MainViewModel中的屬性是有意義的。
是否有可能在SettingsViewModel在MainViewModel屬性綁定到屬性,或者我應該使用的消息告訴MainViewModel的東西在SettingsViewModel有什麼改變?
感謝您的任何建議...

回答

0

如果您SettingsViewModelMainViewModel啓動,你已經實現了INotifyPropertyChanged接口,那麼你可以聽SettingsViewModel.PropertyChanged事件:

MainViewModel

SettingsViewModel settingsViewModel = new SettingsViewModel(); 
settingsViewModel.PropertyChanged = SettingsViewModel_PropertyChanged; 

... 

private void SettingsViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e) 
{ 
    // Monitor property changes here 
} 
3

一個簡單的方法通過暴露SettingsViewModel因爲這樣你的MainViewModel一個屬性來做到這一點:

Public SettingsViewModel Settings 
{ 
    get 
    { 
     return settingsViewModel; 
    } 
} 

然後在你的MainView.xaml的結合可以這樣做:

"{Binding Path=Settings.ASettingOnTheSettingsVM}" 
+0

謝謝,其實這就是我所做的。由於SettingsView綁定到SettingsViewModel,我不得不爲SettingsView添加一些xxxTemp屬性來綁定。當用戶在SettingsView上單擊「保存」時,持久性屬性 - 即MainView控件所綁定的 - 得到更新。 – Number8

+0

這是一個有用的解決方案,但是這不會打破MVVM模式?只是一個想法... –

相關問題