MVVM Light Messenger - 发送和注册对象

Jas*_*n D 32 mvvm mvvm-light

有人能够给我一个如何使用MVVM Light的Messenger在类之间发送和注册自定义对象的示例,或者指向一个涵盖此内容的教程(最好是一个具体示例)吗?我一直在尝试使用Messenger将项目中的对象传递给另一个类,但我从来没有成功过.我在网上看了一些例子,但没有找到任何能告诉我需要的东西.谢谢.

Aar*_*ver 59

微软的Jesse Liberty 在如何利用MVVM Light中的消息传递方面有一个很好的具体步骤.前提是创建一个类,它将充当您的消息类型,订阅,然后发布.

public class GoToPageMessage
{
   public string PageName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这基本上会根据上面的类型/类发送消息......

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

现在,您可以注册给定的消息类型,该类型与上面定义的类相同,并提供在接收消息时将被调用的方法,在本例中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;
}
Run Code Online (Sandbox Code Playgroud)