首页 > 其他 > 详细

MVVM Light中的Message

时间:2014-03-21 01:23:12      阅读:684      评论:0      收藏:0      [点我收藏+]

比喻:像漂流瓶一样发送一个Message,任何人有兴趣就可以拾起来。

MVVM Light中的Message的使用分为三个步骤:

1.创建一个类,包含要传递的Message。

2.在ViewModel中,实例化这个Message类并广播这个Message。

3.在MainPage.xaml.cs中注册此Message并在接收到的时候处理它。

 

在项目中创建一个新Class,命名为GoToPageMessage.

1
2
3
4
5
6
7
8
9
1: using System;
2: 
3: namespace MvvmLightNavigationBehaviorAndMessages
4: {
5:    public class GoToPageMessage
6:    {
7:       public string PageName { get; set; }
8:    }
9: }

  返回MainViewModel.cs并移除GoToPage2方法。创建一个GoToPageMessage的实例(初始化你要导航的页面名称),并使用Messager对象来广播此Message,如下所示:

1
2
3
4
5
6
1: private object GoToPage2()
2: {
3:    var msg = new GoToPageMessage() { PageName = "Page2" };
4:    Messenger.Default.Send<GoToPageMessage>( msg );
5:    return null;
6: }

  需要引用以下命名空间:

1
1: using GalaSoft.MvvmLight.Messaging;

  这样就广播了Message,剩下的就是注册一个收件人和响应这个Message。要做到这一点,返回MainPage.xaml.cs,在构造函数或MainPage_Loaded函数中注册Message:

1
2
3
4
5
1: Messenger.Default.Register<GoToPageMessage>
2: (
3:      this,
4:      ( action ) => ReceiveMessage( action )
5: );

  你需要添加Messaging的声明。

ReceiveMessage是你要写的一个方法,用来实现导航。

1
2
3
4
5
6
7
8
9
10
1: private object ReceiveMessage( GoToPageMessage action )
 2: {
 3:    StringBuilder sb = new StringBuilder( "/Views/" );
 4:    sb.Append( action.PageName );
 5:    sb.Append( ".xaml" );
 6:    NavigationService.Navigate(
 7:       new System.Uri( sb.ToString(),
 8:             System.UriKind.Relative ) );
 9:    return null;
10: }

  Build程序并运行,点击MainPage的按钮将导航到Page2.

MVVM Light中的Message,布布扣,bubuko.com

MVVM Light中的Message

原文:http://www.cnblogs.com/cw_volcano/p/3614798.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!