【问题标题】:Passing parameter from one viewmodel to another one using messenger使用 messenger 将参数从一个视图模型传递到另一个视图模型
【发布时间】:2013-03-02 19:41:36
【问题描述】:

每当我想从 View 模型打开一个新窗口时,通常我都会使用 messenger 。 但现在我想从视图模型打开一个新窗口,并将一个对象从调用视图模型传递给被调用的视图模型。我该如何实施? 在我的 viewmodelbase 类中,目前我有以下方法。

public void SendNotificationMessage(string notification)
        {
            Messenger.Default.Send<NotificationMessage>(new NotificationMessage(notification));
        }

        public void SendNotificationMessageAction(string notification, Action<object> callback)
        {
            var message = new NotificationMessageAction<object>(notification, callback);
            Messenger.Default.Send(message);
        }

请帮帮我

【问题讨论】:

    标签: wpf mvvm-light


    【解决方案1】:

    你的语法应该是这样的:

    //Subscribe
    Messenger.Default.Register<OpewNewWindowMessage>(OpenNewWindowMethod);
    
    // Broadcast
    var message = new OpewNewWindowMessage();
    message.ViewModel = this;
    Messenger.Default.Send<OpewNewWindowMessage>(message);
    
    // Subscribed method would look like this
    void OpenNewWindowMethod(OpewNewWindowMessage e)
    {
        // e.ViewModel would contain your ViewModel object
    }
    

    在上面的示例中,您将创建一个名为 OpewNewWindowMessage 的新类并为其赋予属性 ViewModel,然后您将在广播消息之前填充该值。

    OpenNewWindowMethod() 将收到消息,并可以访问 OpewNewWindowMessage.ViewModel 以访问 ViewModel 属性

    从技术上讲,如果您只传递一个属性,则不需要创建消息对象,但是我通常发现如果您创建消息对象而不是使用通用 @987654326,它会使代码更易于阅读和维护@ 就像你在你的代码中一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-18
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多