码迷,mamicode.com
首页 > 其他好文 > 详细

Prism里EventAggregator的事件订阅及发布

时间:2015-01-13 12:27:55      阅读:651      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!