2015-09-22 70 views
0

我有2個視圖第一個包含用戶的列表,第二個我可以編輯的用戶,我想要的是通過每個屏幕的2 ViewModel之間的Id爲我可以知道將被修改的用戶。我是一名使用MVVM Light Framework的初學者,任何人都可以爲我提供這種情況下的最佳解決方案嗎?如何使用MVVM Light在ViewModel之間傳遞變量?

回答

2

首先將您的變量包裝在類中。

public class VariableMessage 
{ 
     public string YourVariable { get; set; } 
} 

然後在接收視圖模型初始化器中接收消息寄存器。

Messenger.Default.Register<VariableMessage> 
      (
       this, 
       (action) => ReceiveVariableMessage(action) 
      ); 

private object ReceiveVariableMessage(VariableMessage variableMessage) 
{ 
     Console.WriteLine(variableMessage.YourVariable); 
     return null; 
} 

,而不是發短信

Messenger.Default.Send<VariableMessage>(new VariableMessage() { YourVariable = "Hello"}); 
0

使用信使(使用往往趨於凌亂代碼信使),我會建議通過ID和「編輯用戶」按鈕/行動然後在目標視圖模型的構造函數中使用該id。

按鈕在你看來:

<Button Content="Edit" 
Command="{Binding DataContext.EditButtonCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}" 
CommandParameter="{Binding }" /> 

在您的視圖模型:

public ICommand EditButtonCommand= new RelayCommand<object>(UseEditButton) 

private async void UseEditButton(object obj) 
{ 
     YourModel id = obj as YourModel; 
    YourEditViewModel viewModel = new YourEditViewModel(id) 
    //navigate to vm 
} 
+0

你能進一步解釋,你會怎麼做導航?謝謝 – Antoine