このスレッドスレッドから
このコメントのメッセージを使用して新しいウィンドウを開くことができますが、新しく開いているウィンドウにパラメータを渡したいです。これについて何か考えはありますか?
ありがとうございました。
を使用します。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);
}
}
新しいウィンドウを開きたいビューモデルには、コマンドから呼び出すこのメソッドがあります。これは、Companyエンティティが埋め込まれたメッセージを送信するだけです。
public void EditCompany()
{
Messenger.Default.Send<NotificationMessage<MyEntities.Company>>(new NotificationMessage<MyEntities.Company>(Companies.FirstOrDefault(), "ShowCompany"));
}
NotificationMessageを継承するカスタムクラスを作成し、必要なものを設定して渡し、ビュー側でカスタムクラスにキャストし直します。これがお役に立てば幸いです。