2013-06-07 27 views
28

MVVM Lightのメッセンジャーを使用してクラス間でカスタムオブジェクトを送信して登録する方法の例や、これをカバーするチュートリアルを指摘してもらえますか? ?私はMessengerを使ってプロジェクトのオブジェクトを別のクラスに渡そうとしていますが、成功したことはありません。私は例をオンラインで見てきましたが、必要なものを私に見せてくれるものは見つかりませんでした。ありがとう。MVVM Light Messenger - オブジェクトの送信と登録

答えて

50

MicrosoftのJesse Libertyは、MVVM Light内でメッセージングを使用する方法について、concrete walk throughという素晴らしい機能を備えています。前提は、あなたのメッセージタイプとして機能し、購読してから出版するクラスを作成することです。

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です。

ページの名前を変更するか、別の名前空間/フォルダ
+1

? –

+0

べたつきイベントに移動するとき、私はそれが変更されますので、名前の代わりに一部のメッセージにはビューのタイプを使用することを好む

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; } 

+0

ありがとう、これはまさに私が探していたものでした。私はまた、文字列ではなく型を渡すつもりだと思う、インテリセンスだけで人生をはるかに楽しくする。 –

関連する問題