Messenger 在两个视图模型中发送
Messenger sent in two view models
我正在使用这个:
Messenger.Default.Send<NameMessage>(new NameMessage("Test"));
此消息在两个视图模型中注册。
视图模型 1:
Messenger.Default.Register<NameMessage>(this, MethodInMyViewModel1);
视图模型 2:
Messenger.Default.Register<NameMessage>(this, MethodInMyViewModel2);
当我发送消息时,调用了两个方法。
但我每次都有一个视图实例。
所以应用程序停止了。
如何使用相同的消息调用特定的视图模型?
假设您正在谈论 mvvmlight 消息传递命名空间,您总是可以根据目标 VM 发送具有不同值的相同消息,因此每个 VM 都应该像这样注册(下面的一个是针对 VM1 的):
Messenger.Default.Register<NameMessage>(this, (m) =>
{
switch (m.Value)
{
case "VM1":
MethodInMyViewModel1();
break;
}
});
对 VM2 执行相同的操作,并在发送消息时将适当的目标 VM 消息传递给 NameMessage Value
。
我正在使用这个:
Messenger.Default.Send<NameMessage>(new NameMessage("Test"));
此消息在两个视图模型中注册。
视图模型 1:
Messenger.Default.Register<NameMessage>(this, MethodInMyViewModel1);
视图模型 2:
Messenger.Default.Register<NameMessage>(this, MethodInMyViewModel2);
当我发送消息时,调用了两个方法。
但我每次都有一个视图实例。
所以应用程序停止了。
如何使用相同的消息调用特定的视图模型?
假设您正在谈论 mvvmlight 消息传递命名空间,您总是可以根据目标 VM 发送具有不同值的相同消息,因此每个 VM 都应该像这样注册(下面的一个是针对 VM1 的):
Messenger.Default.Register<NameMessage>(this, (m) =>
{
switch (m.Value)
{
case "VM1":
MethodInMyViewModel1();
break;
}
});
对 VM2 执行相同的操作,并在发送消息时将适当的目标 VM 消息传递给 NameMessage Value
。