1

从这个线程线程

我可以通过使用此评论的消息打开新窗口,但我也想将参数传递给新打开的窗口。有什么想法吗?

谢谢你。

4

2 回答 2

2

使用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"));
}
于 2013-01-18T11:40:52.473 回答
0

创建一个继承 NotificationMessage 的自定义类并在其中设置您想要的内容并传递它,然后在视图侧将其转换回您的自定义类。我希望这将有所帮助。

于 2012-07-13T04:10:17.520 回答