MVVMLight中,消息注册和消息通知
本文讲述MVVMLight中,消息注册和消息通知;
MVVMLight的消息注册机制是一个静态变量在App中全局广播与注册;
MVVMLight中消息通知机制的对外实现:框架下对所有对象提供单例Messenger工具类,任何需要订阅、被订阅(发送、接收事件消息)的对象都通过对Messenger进行调用实现;避免了订阅方与被订阅方必须实例接触的问题了;调用方式上,在发送和接收用如下参数定义方式实现;
**************************************************************************************************************
下面我们来看消息注册和通知的方法的详细讲解:Register(注册订阅事件)、Send(发送消息),如下说明:
/// <summary>
/// 注册订阅事件
/// </summary>
/// <typeparam name="TMessage">传参类型</typeparam>
/// <param name="recipient">订阅实例</param>
/// <param name="token">发送与接收定义的key值</param>
/// <param name="action">订阅事件触发的action</param>
/// <param name="keepTargetAlive">持续控制实例存在,防止被回收清除</param>
public virtual void Register<TMessage>(object recipient,object token,Action<TMessage> action,bool keepTargetAlive = false)/// <summary>
/// 被订阅方触发事件
/// </summary>
/// <typeparam name="TMessage">传参类型</typeparam>
/// <param name="message">参数数据</param>
/// <param name="token">key</param>
public virtual void Send<TMessage>(TMessage message, object token)
**************************************************************************************************************
好了,下面我们以一个示例来进行简单的说明:
Messenger.Default.Register<bool>(this, "SearchStudents", SearchStudents);//消息注册
//SearchStudents(bool obj):消息触发时,需要执行的函数
private void SearchStudents(bool obj)
{SearchStudentsDataCmd.Execute(searchType);
}
//发送消息
Messenger.Default.Send<bool>(true, "SearchStudents");
Messenger.Default.Unregister<object>(this, "SearchStudents");
**************************************************************************************************************