【问题标题】:Messenger sent in two view modelsMessenger 在两个视图模型中发送
【发布时间】:2019-10-28 10:32:00
【问题描述】:

我正在使用这个:

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

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

视图模型 1:

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

视图模型 2:

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

当我发送消息时,会调用两个方法。

但我每次都有一个我的视图实例。

所以应用程序停止。

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

【问题讨论】:

    标签: wpf viewmodel messenger


    【解决方案1】:

    假设您正在谈论 mvvmlight 消息传递命名空间,您始终可以根据您所针对的 VM 发送具有不同值的相同消息,因此每个 VM 都应该像这样注册(下面的一个是针对 VM1):

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

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

    【讨论】:

    • 不客气 :)),如果您正在寻找答案,请接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 2011-01-01
    • 1970-01-01
    相关资源
    最近更新 更多