每当我想从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);
}
请帮帮我
答案 0 :(得分: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.ViewModel
以访问ViewModel属性
从技术上讲,如果只传递一个属性,则不需要创建消息对象,但是我通常会发现,如果创建消息对象而不是使用泛型{{{},则会使代码更易于阅读和维护。 1}}就像你的代码一样。