从这个线程线程
我可以通过使用此评论的消息打开新窗口,但我也想将参数传递给新打开的窗口。有什么想法吗?
谢谢你。
使用NotificationMessage<T>
,无需继承自NotificationMessage
.
例如(我在我的项目中使用 Telerik Docking 表单容器,所以你可以忽略 RadPane 的东西 - 希望你明白)
using GalaSoft.MvvmLight.Messaging;
public MainWindow()
{
InitializeComponent();
Messenger.Default.Register<NotificationMessage<MyEntities.Company>>(this, (c) => NotificationMessageReceived(c.Notification, c.Content));
}
private void NotificationMessageReceived (string msg, MyEntities.Company c)
{
if (msg == "ShowCompany")
{
var CompanyPane = new RadDocumentPane();
CompanyPane.Header = c.Name; // I use the Name property of my company entity here
CompanyPane.Content = new Views.CompanySummaryView();
this.radPaneGroup.AddItem(CompanyPane, DockPosition.Center);
}
}
在我想打开新窗口的视图模型中,我有这个方法,我从命令中调用它。这只是发送嵌入了公司实体的消息。
public void EditCompany()
{
Messenger.Default.Send<NotificationMessage<MyEntities.Company>>(new NotificationMessage<MyEntities.Company>(Companies.FirstOrDefault(), "ShowCompany"));
}
创建一个继承 NotificationMessage 的自定义类并在其中设置您想要的内容并传递它,然后在视图侧将其转换回您的自定义类。我希望这将有所帮助。