我有2个视图,第一个包含用户列表,第二个包含我可以编辑用户的所有内容,我想要的是在每个屏幕的2个ViewModel之间传递Id,我可以知道将是的用户改性。我是一名使用MVVM Light Framework的初学者,任何人都能为我提供最佳解决方案吗?
答案 0 :(得分:3)
首先将变量包装在类中。
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"});
答案 1 :(得分:0)
我建议不要使用信使(使用信使经常会弄乱你的代码),而是建议用#&#34;编辑用户&#34;按钮/操作,然后在目标viewmodel的构造函数中使用id。
视图中的按钮:
<Button Content="Edit"
Command="{Binding DataContext.EditButtonCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
CommandParameter="{Binding }" />
在你的viewmodel中:
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
}