2013-05-29 54 views
1

目前我的項目中有2個ViewModels。 MainViewModel目前綁定到我的WPF窗口,所以我有一個命令在我的另一個ViewModel(AdventurerViewModel),不再觸發。有沒有辦法讓這個命令在沒有綁定ViewModel的情況下觸發,或者我的所有命令都需要在MainViewModel中?有沒有一種很好的方法來組織可能會幫助我避免將來出現這種情況的命令?任何建議將不勝感激。在MVVM中組織命令和視圖模型

編輯:代碼

的位從我XAML

按鈕Grid.Column = 「3」 Grid.Row = 「1」 CONTENT = 「IncreaseLevel」 命令= 「{結合IncreaseLevel}」

AdventurerViewModel.cs

public ICommand IncreaseLevel { get { return new RelayCommand(IncreaseLevelExecute, CanIncreaseLevelExecute); } } 

    private bool CanIncreaseLevelExecute() 
    { 
     return true; 
    } 

    private void IncreaseLevelExecute() 
    { 
     Level++; 
    } 
+2

聽起來好像你正在嘗試爲單個視圖創建多個視圖模型,而你並不想這麼做。看看這個答案的標準方法http://stackoverflow.com/questions/5252339/how-to-change-view-viewmodel-based-on-command –

+0

是的,它看起來就是這個問題。那我必須重新組織。 –

回答

1

首先確保你正確分割的ViewModels並在正確的ViewModels的命令。

之後,您可能仍然可以通知其他ViewModel當前ViewModel中的更改。在這種情況下,您可以查看ViewModel之間的消息傳遞系統,以便ViewModel可以訂閱特定事件並對其進行響應。

0

每個視圖使用一個ViewModel。如果你使用一個窗口,那麼你應該使用一個ViewModel。現在在我的項目中有一個窗口,其中有2個用戶控件,每個UserControl都有自己的ViewModel和Window的ViewModel。我可以把所有東西都放在一個ViewModel中,但是這種方式更加清潔,但對於您的示例,我建議您將所有內容放在一個ViewModel中。它真的取決於情況或項目要求。