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 回答
2

我发现THISTHIS非常有用。对于第二个参考,请使用末尾的 Next Page 按钮带您查看他们制作的示例。

于 2019-08-09T16:15:16.480 回答