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

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

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

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

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

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

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

  需要引用以下命名空间:

1: using GalaSoft.MvvmLight.Messaging;

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

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

  你需要添加Messaging的声明。

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

   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.

第三步的简写:

            Messenger.Default.Register<StopRequestMessage>(this, (new Action<StopRequestMessage>(x =>
{
if (x.IsStopped)
{
//output result report
RedemptionTransactionReport();
}
})));

  

最后回收:

Messenger.Default.Unregister(this);

  

类似文章参考:http://blog.csdn.net/duanzilin/article/details/6385151

MVVM Light中的Message的更多相关文章

  1. 【MVVM Light】Messager的使用

    一.前言       在MVVM编程的模式中,有时候我们会遇到一个很尴尬的情况: 若干个xaml.cs都复用一个ViewModel,当ViewModel想传递一个特定的消息给某一个xaml.cs的时候 ...

  2. MVVM Light须要注意的10个问题

    MVVM Light须要注意的10个问题 从使用XAML技术基础開始(实际上并非非常久曾经).我便关注MVVM(Model – View – ViewModel)模式.偶然接触到MVVM Light不 ...

  3. MVVM Light 新手入门(3) :ViewModel / Model 中定义“事件” ,并在View中调用 (无参数调用)

    今天学习MVVM架构中“事件”的添加并调用,特记录如下,学习资料均来自于网络,特别感谢翁智华 的 利刃 MVVMLight 6:命令基础 在MVVM Light框架中,事件是WPF应用程序中UI与后台 ...

  4. MVVM Light 新手入门(2) :ViewModel / Model 中定义“属性” ,并在View中调用

    今天学习MVVM架构中“属性”的添加并调用,特记录如下,学习资料均来自于网络,特别感谢翁智华的利刃 MVVMLight系列. 一个窗口的基本模型如下: View(视图) -> ViewModel ...

  5. 【MVVM Light】新手初识MVVM,你一看就会

    一.前言 作为一个初入软件业的新手,各种设计模式与框架对我是眼花缭乱的.所以当我接触到这些新知识的时候就希望自己能总结几个步骤,以便更好更方便的在日常工作中进行使用. MVVM顾名思义就是Model- ...

  6. MVVM Light Toolkit使用指南

    原文:MVVM Light Toolkit使用指南 原文地址:  https://blog.csdn.net/ldld1717/article/details/77040077 概述 MVVM Lig ...

  7. [MVVM Light]Messenger 的使用

    原文:[MVVM Light]Messenger 的使用 当我们使用MVVM开发模式进行开发时,ViewModel之间的通信常常是很头疼的事情,好在MVVM Light提供了Messenger类可以轻 ...

  8. “Win10 UAP 开发系列”之 在MVVM模式中控制ListView滚动位置

    这个扩展属性从WP8.1就开始用了,主要是为了解决MVVM模式中无法直接控制ListView滚动位置的问题.比如在VM中刷新了数据,需要将View中的ListView滚动到顶部,ListView只有一 ...

  9. MVVM Light 一个窗口承载两个视图

    MVVM Light 一个窗口承载两个视图   原文地址:http://www.codeproject.com/Articles/323187/MVVMLight-Using-Two-Views 本文 ...

随机推荐

  1. away3d打包到IOS锯齿问题解决办法

    很多ios设备是高清屏,一个像素顶普通设备四个像素.从这点上也许可以入手解决. 先把<requestedDisplayResolution>high</requestedDispla ...

  2. HTML5-原声拖放

    最早在网页中引入js拖放功能的是IE4,并且只可以拖放图像和某些文本.IE5.5以后网页中的任何元素都可以进行拖放.HTML5以IE为实例制定了拖放规范.FireFox3.5.Safari3+和Chr ...

  3. C语言到底怎么了?

    自2015年11月开始,所有C语言系列都呈现出衰落之势.在超过15年的时间里,C语言在编程语言排行榜中的占比一直有15%-20%,但今年却突然急转直下,目前占比已不足10%,且目前看来回天乏力. 那么 ...

  4. struct timespec 和 struct timeval

    time()提供了秒级的精确度 . 1.头文件 <time.h> 2.函数原型 time_t time(time_t * timer) 函数返回从TC1970-1-1 0:0:0开始到现在 ...

  5. CSS 之 @media

    @media 版本:CSS2 兼容性:IE5+ 语法: @media  sMedia  {sRules} 取值: sMedia : 指定设备名称.请参阅设备类型 all, aural, braille ...

  6. ecshop会员中心增加订单搜索功能

    在user.php中的act=order_list中增加以下程序. $order_sn = isset($_REQUEST['order_sn'])?$_REQUEST['order_sn']:''; ...

  7. 原创:Javascript循环队列类

    需要滚动显示最多一定数量的信息,于弄了个这个 var LeesCircleQueue=function(size) { // 队列数组 var _queue=[]; // 队首索引 var _fron ...

  8. windows下常用快捷键

    windows下常用快捷键: 显示桌面: win徽标+D 打开资源管理器: win徽标+E 打开任务管理器: Ctrl+Alt+delete 任务切换: Alt+Tab 应用程序中窗口之间的切换: C ...

  9. 一步步学习ASP.NET MVC3 (13)——HTML辅助方法

    请注明转载地址:http://www.cnblogs.com/arhat 今天老魏是在十分郁闷,我的一个U盘丢了,心疼里面的资料啊,全部是老魏辛辛苦苦积攒的Linux资料,太心疼,到现在心情还不是很爽 ...

  10. 制作按钮(Button)

    按钮的核心作用 1.按钮能接收单击并触发响应事件. 2.按钮被单击时能同时触发多个响应事件. 3.按钮可以有普通.悬停.单击.禁用等多个状态的不同表现. 4.广泛的说,按钮的核心在于接收事件,任何可以 ...