4

每当我想从 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);
        }

请帮我

4

1 回答 1

3

你的语法看起来像这样:

//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.ViewModelViewModel 属性

从技术上讲,如果您只传递一个属性,则不需要创建消息对象,但是我通常发现,如果您创建一个消息对象而不是使用<object>您在您的代码。

于 2013-03-14T13:00:36.970 回答