原文:[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);

最新文章

  1. MySQL DCL 整理
  2. GisUtil工具类:将WKT(wellKnownText)文本转换为ElasticSearch识别的空间对象字符串形式
  3. 【BZOJ】1012: [JSOI2008]最大数maxnumber(树状数组+rmq)
  4. 546B. Soldier and Badges
  5. Python+Bottle+Sina SAE快速构建网站
  6. SQL Server索引 - 非聚集索引 &lt;第七篇&gt;
  7. 大夏VIEW使用技巧
  8. {}typeof string转为 obj json
  9. 2017-2018-1 我爱学Java 第八周 作业
  10. ajax 操作
  11. Tapestry: Obtained resource by @Inject is NULL
  12. .net 笔试面试总结(3)
  13. IE下get方式传中文参数乱码解决方法
  14. Django 序列化-token
  15. JAVA(二)异常/包及访问权限/多线程/泛型
  16. 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装用来向微信好友发送消息的itchat库(图文详解)
  17. Java线程分析
  18. Docker的安装和使用说明——Docker for Windows
  19. Net::HTTP 一次添加 cookie, body 发送post请求
  20. linux7系统开机报错failed to start login service

热门文章

  1. ImageView的圆角半径
  2. 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【四】使用CUBLAS加速计算人脸向量的余弦距离
  3. HDU 1280 前m大的数 基数排序
  4. [Immutable.js] Updating nested values with ImmutableJS
  5. Android入门——Bitmap和BitmapFactory
  6. js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用)
  7. stackedit
  8. Java NIO详细介绍
  9. 【42.07%】【codeforces 558A】Lala Land and Apple Trees
  10. [GraphQL] Write a GraphQL Mutation