[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);