首页 > 其他 > 详细

Prism里EventAggregator的事件订阅及发布

时间:2015-01-13 12:27:43      阅读:170      评论:0      收藏:0      [点我收藏+]

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的事件订阅及发布

原文:http://www.cnblogs.com/Alf7/p/4220798.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!