有人可以给我一个示例,说明如何使用 MVVM Light 的 Messenger 在类之间发送和注册自定义对象,或者指向一个涵盖此内容的教程(最好是一个具体示例)?我一直在尝试使用 Messenger 将项目中的对象传递给另一个类,但我从未成功过。我在网上查看了示例,但没有找到任何可以显示我需要的东西。谢谢。
问问题
49946 次
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 回答