首页 > 代码库 > Prism里EventAggregator的事件订阅及发布
Prism里EventAggregator的事件订阅及发布
EventAggregator是一个对于便于管理事件的工具。
1. 定义一个类,继承自CompositePresentationEvent<T>。该类用来定义不同的事件及其参数和处理方式
public class GetInputMessages:CompositePresentationEvent<string>{}
2. 创建一个EventAgregator的实例,并且保证该实例唯一来管理事件
public class EventAggregatorRepository { public EventAggregatorRepository() { eventAggregator = new EventAggregator(); } public IEventAggregator eventAggregator; public static EventAggregatorRepository eventRepository = null; //单例,保持内存唯一实例 public static EventAggregatorRepository GetInstance() { if (eventRepository == null) { eventRepository = new EventAggregatorRepository(); } return eventRepository; } }
3. 订阅事件(定义事件处理方式)
EventAggregatorRepository.GetInstance().eventAggregator.GetEvent<GetInputMessages>().Subscribe(ReceiveMessage,ThreadOption.UIThread,true);//事件处理方式public void ReceiveMessage(string messageData){ this.txtResult.Text = messageData;}
4. 发布事件(调用事件处理)
EventAggregatorRepository.GetInstance().eventAggregator.GetEvent<GetInputMessages>().Publish(messageData);
实现机制和委托(Delegate)非常类似,个人认为这样EventAggregator的存在只是为了让逻辑更加清楚而已吧。他的好处是如果处理方式一致的话,可以在多个页面来触发这样一个事件
Prism里EventAggregator的事件订阅及发布
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。