以两种视图模型发送的信使

问题描述 投票:0回答:1

我正在使用此:

Messenger.Default.Send<NameMessage>(new NameMessage("Test"));

此消息在两个View模型中注册。

ViewModel 1:

Messenger.Default.Register<NameMessage>(this, MethodInMyViewModel1);

ViewModel 2:

Messenger.Default.Register<NameMessage>(this, MethodInMyViewModel2);

当我发送消息时,将调用两种方法。

但是我每次都有一个实例。

因此应用程序停止。

如何用相同的消息调用特定的视图模型?

wpf viewmodel messenger
1个回答
0
投票

假设您正在谈论mvvmlight Messenger命名空间,您总是可以根据要定位的VM发送具有不同值的相同消息,因此每个VM都应该这样注册(一个波纹管用于VM1):

Messenger.Default.Register<NameMessage>(this, (m) =>
{
    switch (m.Value)
    {
        case "VM1":
             MethodInMyViewModel1();           
            break;
    } 
});

对VM2执行相同的操作,并且在发送消息时,将适当的目标VM消息传递给NameMessage Value

© www.soinside.com 2019 - 2024. All rights reserved.