MVVM Light中的Message
比喻:像漂流瓶一样发送一个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的更多相关文章
- 【MVVM Light】Messager的使用
一.前言 在MVVM编程的模式中,有时候我们会遇到一个很尴尬的情况: 若干个xaml.cs都复用一个ViewModel,当ViewModel想传递一个特定的消息给某一个xaml.cs的时候 ...
- MVVM Light须要注意的10个问题
MVVM Light须要注意的10个问题 从使用XAML技术基础開始(实际上并非非常久曾经).我便关注MVVM(Model – View – ViewModel)模式.偶然接触到MVVM Light不 ...
- MVVM Light 新手入门(3) :ViewModel / Model 中定义“事件” ,并在View中调用 (无参数调用)
今天学习MVVM架构中“事件”的添加并调用,特记录如下,学习资料均来自于网络,特别感谢翁智华 的 利刃 MVVMLight 6:命令基础 在MVVM Light框架中,事件是WPF应用程序中UI与后台 ...
- MVVM Light 新手入门(2) :ViewModel / Model 中定义“属性” ,并在View中调用
今天学习MVVM架构中“属性”的添加并调用,特记录如下,学习资料均来自于网络,特别感谢翁智华的利刃 MVVMLight系列. 一个窗口的基本模型如下: View(视图) -> ViewModel ...
- 【MVVM Light】新手初识MVVM,你一看就会
一.前言 作为一个初入软件业的新手,各种设计模式与框架对我是眼花缭乱的.所以当我接触到这些新知识的时候就希望自己能总结几个步骤,以便更好更方便的在日常工作中进行使用. MVVM顾名思义就是Model- ...
- MVVM Light Toolkit使用指南
原文:MVVM Light Toolkit使用指南 原文地址: https://blog.csdn.net/ldld1717/article/details/77040077 概述 MVVM Lig ...
- [MVVM Light]Messenger 的使用
原文:[MVVM Light]Messenger 的使用 当我们使用MVVM开发模式进行开发时,ViewModel之间的通信常常是很头疼的事情,好在MVVM Light提供了Messenger类可以轻 ...
- “Win10 UAP 开发系列”之 在MVVM模式中控制ListView滚动位置
这个扩展属性从WP8.1就开始用了,主要是为了解决MVVM模式中无法直接控制ListView滚动位置的问题.比如在VM中刷新了数据,需要将View中的ListView滚动到顶部,ListView只有一 ...
- MVVM Light 一个窗口承载两个视图
MVVM Light 一个窗口承载两个视图 原文地址:http://www.codeproject.com/Articles/323187/MVVMLight-Using-Two-Views 本文 ...
随机推荐
- PHP 各种函数
usleep() 函数延迟代码执行若干微秒. unpack() 函数从二进制字符串对数据进行解包. uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. time_sleep_unti ...
- 最大类间方差法(Otsu)
由Otsu(大津展之)于1978年提出的最大类间方差法,是引起较多关注的一种阈值选取方法.它是在判决分析或最小二乘原理的基础上推导出来的. 参考文献: [1] Otsu N. A threshold ...
- Linux---vi编辑器必会操作
移动光标: (1)基本的上下左右:通过箭头按键控制 (2)跳到一行的末尾:键盘"end" (3)跳到一行的开头:键盘"home" (4)跳到最后一行:shift ...
- 通过正则表达式获取url中参数
url: http://xxxx.com?name=魅力&id=123 js中: var name = getUrlParam("name"); /*通过正则获取url中的 ...
- LNMP1.2一键安装教程
系统需求: CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian Linux系统 需要2GB以上硬盘剩余空间 128M以上内存,Xen的需要有SWAP,OpenVZ的另外 ...
- 修改VC++2010界面左上角图标
(1)在Resource View中创建或者插入一个新的Icon资源,用于你想要的程序图标,假设ID号为IDI_ICON(这种图标要有16*16和32*32两种格式的,前者用于最小化和列表显示等,后者 ...
- uitableviewcell 自适应大小 参考
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { ...
- ASP.NET 学习博客
ASP.NET MVC5 网站开发实践 http://www.cnblogs.com/mzwhj/p/3537145.html 基于MVC4+EasyUI的Web开发框架形成之旅 http://www ...
- 老鸟的Python入门教程
转自老鸟的Python入门教程 重要说明 这不是给编程新手准备的教程,如果您入行编程不久,或者还没有使用过1到2门编程语言,请移步!这是有一定编程经验的人准备的.最好是熟知Java或C,懂得命令行,S ...
- nginx 域名rewrite跳转
转自:http://blog.csdn.net/xingfujie/article/details/7337832 需求:nginx规则,所有对OA.bccom.info的访问,redirect到uc ...