Wpf 使用messenger将参数从一个viewmodel传递到另一个viewmodel

Wpf 使用messenger将参数从一个viewmodel传递到另一个viewmodel,wpf,mvvm-light,Wpf,Mvvm Light,每当我想从视图模型打开新窗口时,通常我都在使用messenger。 但现在我想从视图模型打开一个新窗口,并将一个对象从调用视图模型传递到调用视图模型。我如何实现这一点? 在我的viewmodelbase类中,目前我有以下方法 public void SendNotificationMessage(string notification) { Messenger.Default.Send<NotificationMessage>(new Noti

每当我想从视图模型打开新窗口时,通常我都在使用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);
        }
public void SendNotificationMessage(字符串通知)
{
senger.Default.Send(新通知消息(通知));
}
public void SendNotificationMessageAction(字符串通知、操作回调)
{
var message=新的NotificationMessageAction(通知、回调);
Messenger.Default.Send(消息);
}

请帮助我

您的语法如下所示:

//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
}
//订阅
Messenger.Default.Register(OpenNewWindowMethod);
//广播
var message=new opewnewindowmessage();
message.ViewModel=this;
Messenger.Default.Send(消息);
//订阅的方法如下所示
void OpenNewWindowMethod(OpownewIndowMessage e)
{
//e.ViewModel将包含您的ViewModel对象
}
在上面的示例中,您将创建一个名为
opewnewindowmessage
的新类,并将其属性设置为
ViewModel
,然后在广播消息之前填充该值

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

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