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的存在只是为了让逻辑更加清楚而已吧。他的好处是如果处理方式一致的话,可以在多个页面来触发这样一个事件

时间: 2024-08-11 09:49:26

Prism里EventAggregator的事件订阅及发布的相关文章

C#中的事件-订阅与发布

我们用一个简单的例子,来说明一下这种消息传递的机制. 有一家三口,妈妈负责做饭,爸爸和孩子负责吃...将这三个人,想象成三个类. 妈妈有一个方法,叫做“做饭”.有一个事件,叫做“开饭”.做完饭后,调用开发事件,发布开饭消息. 爸爸和孩子分别有一个方法,叫做“吃饭”. 将爸爸和孩子的“吃饭”方法,注册到妈妈的“开饭”事件.也就是,订阅妈妈的开饭消息.让妈妈做完饭开饭时,发布吃饭消息时,告诉爸爸和孩子一声. 这种机制就是C#中的,订阅发布.下面我们用代码实现: 1 class Program 2 {

Eventbus的使用与深入-- 一个好用的开源的事件订阅与发布总线,解放你的handler

Eventbus已经发布了很长时间,经历了市场和技术的的考验,与otto齐名,下面来简单了解一下eventbus的使用方法与深入探究. 简单介绍 EventBus是一个用于简化Andorid.Fragment.Threads.Service之间信息传递的一个发布/订阅事件集. 传统的Android组件之间的通信方式有:Activity之间使用Intent:Service向Activity发送broadcast:Fragment和Activity之间相互持有对方的引用(随后可以调用对方的相关方法进

backbone event 事件订阅 和发布 源码小读

nodejs有eventEmitter 类,想到backbone  有个event模块 可以对对象做事件绑定和触发,是backbone的核心模块. backbone event模块 on 添加自定义事件 off 删除自定义事件 trigger 派发自定义事件 once 添加只执行一次的自定义事件 (内部依赖于_.once) listenTo 添加一个观察对象 listenToOnce 添加一个仅执行一次的观察对象 stopListening 删除添加的观察对象 -----------------

C# 委托和事件 与 观察者模式(发布-订阅模式)讲解 by天命

使用面向对象的思想 用c#控制台代码模拟猫抓老鼠 我们先来分析一下猫抓老鼠的过程 1.猫叫了 2.所有老鼠听到叫声,知道是哪只猫来了 3.老鼠们逃跑,边逃边喊:"xx猫来了,快跑啊!我是老鼠xxx" 一  双向耦合的代码 首先需要一个猫类Cat 一个老鼠类Rat 和一个测试类Program 老鼠类的代码如下 //老鼠类 public class Rat { public string Name { get; set; } //老鼠的名字 public Cat MyCat { get;

【JavaScript】让事件支持先发布后订阅

之前写过一个的事件管理器,就是普通的先订阅后发布模式.但实际场景中我们需要做到后订阅的也能收到发布的消息.比如我们关注微信公众号,还是能看到历史消息的.类似于qq离线消息,我先发给你,你登录了就能收到了.就是确保订阅该事件的方法都能被执行. var eventManger = { cached: {}, handlers: {}, //类型,绑定事件 addHandler: function (type, handler) { if (typeof handler !== "function&q

VB.net Wcf事件广播(订阅、发布)

这篇东西原写在csdn.net上,最近新开通了博客想把零散在各处的都转移到一处. 一.源起 学WCF有一段时间了,可是无论是微软的WebCast还是其他网上的教程,亦或我购买的几本书中,都没有怎么提到服务器端事件的订阅.(后来购买的一本WCF服务编程中提供了关于订阅和发布的例子) 网上也查了很多,但大部分都没有清楚地讲到这部分内容,有的虽然是讲这部分内容,但也是语焉不详.最重要的部分都没有讲到(也许是因为水平太差,看不懂).而且网上和书上所用的语言都是C#,这让人很恼火,虽然我能使用C#,但总是

linux下使用hiredis异步API实现sub/pub消息订阅和发布的功能

最近使用redis的c接口--hiredis,使客户端与redis服务器通信,实现消息订阅和发布(PUB/SUB)的功能,我把遇到的一些问题和解决方法列出来供大家学习. 废话不多说,先贴代码. redis_publisher.h /************************************************************************* > File Name: redis_publisher.h > Author: chenzengba > Ma

Redis订阅和发布模式和Redis事务

-------------------Redis订阅和发布模式------------------- 1.概念 Redis 发布订阅(pub/sub)是一种消息通信模式: 发送者(pub)发送消息, 订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 2.subscribe channel:订阅个指定频道的信息 3.publish channel message:将信息message 发送到指定的频道channel 4.应用场景 1.今日头条订阅号.微信订阅公众号.新浪微博关

Guava库学习:学习Guava EventBus(二)EventBus 事件订阅示例

原文地址:Guava库学习:学习Guava EventBus(二)EventBus 事件订阅示例 上一篇Guava库学习:学习Guava EventBus(一)EventBus,我们简单的对Guava基于事件的编程进行了介绍,学习和了解了EventBus类的使用,本篇起,我们通过一系列的示例代码深入的学习EventBus类,本篇学习Guava EventBus(二)EventBus 事件订阅示例.     订阅Subscribe 首先,我们假定定义了如下所示的TradeAccountEvent类