如何使用 MVVM Light 在 ViewModel 之间传递变量?

How can I pass a variable between ViewModel using MVVM Light?

我有 2 个视图,第一个包含用户列表,第二个包含我可以编辑用户的视图,我想要的只是在每个屏幕的 2 个 ViewModel 之间传递 Id,因为我可以知道用户将被修改。我是使用 MVVM Light Framework 的初学者,任何人都可以为我提供针对这种情况的最佳解决方案吗?

首先将变量包装在 class.

 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"});

我建议使用 "Edit User" button/action 传递 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
}