[MVVM Light]Messenger 的使用
当我们使用MVVM开发模式进行开发时,ViewModel之间的通信常常是很头疼的事情,好在MVVM Light提供了Messenger类可以轻松的在ViewModel之间传递消息。
Messenger
Messenger 其他类成员可以通过Register 方法 来建立与Messenger的联系,注册时包含当收到Message的时候要执行的方法。当使用Send方法时,注册的相关的方法将会被调用。
The Messager is a class allowing objects to exchange message.
主要成员:
Register method :
//Registers a recipient for a type of message TMessage. The action
//parameter will be executed when a corresponding message is sent.
void Register<TMessage>(object recipient, object token, Action<TMessage> action);
void Register<TMessage>(object recipient, Action<TMessage> action);
void Register<TMessage>(object recipient, object token, bool receiveDerivedMessagesToo, Action<TMessage> action);
void Register<TMessage>(object recipient, bool receiveDerivedMessagesToo, Action<TMessage> action);
Send method
例子:
在MainViewModel类中
Messenger.Default.Register<Brush>(this, true, m => BackgroundBrush = m);
表示注册Brush类型的Message。
在SettingViewModel类中
Messenger.Default.Send<Brush, MainViewModel>(
GetCurrentBrush());
当执行这段代码时,会调用MainViewModel 注册message时所写的m => BackgroundBrush = m;
其中 m 表示消息内容。
Register函数的结构如下:
void Register<TMessage>(object recipient, object token, Action<TMessage> action);
最新文章
- MySQL DCL 整理
- GisUtil工具类:将WKT(wellKnownText)文本转换为ElasticSearch识别的空间对象字符串形式
- 【BZOJ】1012: [JSOI2008]最大数maxnumber(树状数组+rmq)
- 546B. Soldier and Badges
- Python+Bottle+Sina SAE快速构建网站
- SQL Server索引 - 非聚集索引 <;第七篇>;
- 大夏VIEW使用技巧
- {}typeof string转为 obj json
- 2017-2018-1 我爱学Java 第八周 作业
- ajax 操作
- Tapestry: Obtained resource by @Inject is NULL
- .net 笔试面试总结(3)
- IE下get方式传中文参数乱码解决方法
- Django 序列化-token
- JAVA(二)异常/包及访问权限/多线程/泛型
- 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装用来向微信好友发送消息的itchat库(图文详解)
- Java线程分析
- Docker的安装和使用说明——Docker for Windows
- Net::HTTP 一次添加 cookie, body 发送post请求
- linux7系统开机报错failed to start login service
热门文章
- ImageView的圆角半径
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【四】使用CUBLAS加速计算人脸向量的余弦距离
- HDU 1280 前m大的数 基数排序
- [Immutable.js] Updating nested values with ImmutableJS
- Android入门——Bitmap和BitmapFactory
- js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用)
- stackedit
- Java NIO详细介绍
- 【42.07%】【codeforces 558A】Lala Land and Apple Trees
- [GraphQL] Write a GraphQL Mutation