首页 > 代码库 > 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;        }    }
创建eventAggregator

3. 订阅事件(定义事件处理方式)

技术分享
EventAggregatorRepository.GetInstance().eventAggregator.GetEvent<GetInputMessages>().Subscribe(ReceiveMessage,ThreadOption.UIThread,true);//事件处理方式public void ReceiveMessage(string messageData){     this.txtResult.Text = messageData;}
subscribe事件

4. 发布事件(调用事件处理)

技术分享
EventAggregatorRepository.GetInstance().eventAggregator.GetEvent<GetInputMessages>().Publish(messageData);
publish事件

 

实现机制和委托(Delegate)非常类似,个人认为这样EventAggregator的存在只是为了让逻辑更加清楚而已吧。他的好处是如果处理方式一致的话,可以在多个页面来触发这样一个事件

 

Prism里EventAggregator的事件订阅及发布