标签:
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的存在只是为了让逻辑更加清楚而已吧。他的好处是如果处理方式一致的话,可以在多个页面来触发这样一个事件
标签:
原文地址:http://www.cnblogs.com/Alf7/p/4220798.html