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