33

MVVM Light の Messenger を使用してクラス間でカスタム オブジェクトを送信および登録する方法の例を教えてくれるか、これをカバーするチュートリアル (できれば具体的な例) を教えてください。Messenger を使用してプロジェクト内のオブジェクトを別のクラスに渡そうとしましたが、成功したことはありません。オンラインで例を探しましたが、必要なものを示すものは何も見つかりませんでした。ありがとう。

4

2 に答える 2

64

Microsoft の Jesse Liberty は、MVVM Light 内でメッセージングを利用する方法について具体的なウォークスルーを提供しています。前提は、メッセージ タイプとして機能するクラスを作成し、サブスクライブしてからパブリッシュすることです。

public class GoToPageMessage
{
   public string PageName { get; set; }
}

これは基本的に上記のタイプ/クラスに基づいてメッセージを送信します...

private object GoToPage2()
{
   var msg = new GoToPageMessage() { PageName = "Page2" };
   Messenger.Default.Send<GoToPageMessage>( msg );
   return null;
}

これで、上記で定義したのと同じクラスである特定のメッセージ タイプを登録し、このインスタンスで、メッセージを受信したときに呼び出されるメソッドを提供できますReceiveMessage

Messenger.Default.Register<GoToPageMessage>
( 
     this, 
     ( action ) => ReceiveMessage( action ) 
);

private object ReceiveMessage( GoToPageMessage action )
{
   StringBuilder sb = new StringBuilder( "/Views/" );
   sb.Append( action.PageName );
   sb.Append( ".xaml" );
   NavigationService.Navigate( 
      new System.Uri( sb.ToString(), 
            System.UriKind.Relative ) );
   return null;
}
于 2013-06-07T22:42:37.417 に答える