问题标签 [eventaggregator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4156 浏览

c# - EventAggregator 和 ServiceLocator 问题

我开始使用 Prism 和 MVVM 处理 WPF 项目,我正在尝试使用 eventAggregator 但是,当执行下面的行时会引发异常:

但我无法理解我做错了什么,也许这是一件非常简单的事情,但我已经为此苦苦挣扎了几个小时。

希望有人可以帮助我,在此先感谢

0 投票
3 回答
1178 浏览

prism - 使用共享服务 PRISM 的目的

prism中共享服务的目的和用途是什么?

什么事情可以让我认为我必须使用共享服务而不是EventAggegator

0 投票
2 回答
134 浏览

prism - Eventaggreagtor 在 Prism 框架中的作用是什么?

我有一些想法,为了降低发布和订阅事件的复杂性,Eventaggregator 充当单一来源。这方面还有什么可以理解的。我只想要一个一般性的描述,而不是通过代码的例子。

0 投票
2 回答
5066 浏览

backbone.js - Backbone.js + 全局事件调度器 + require.js:怎么做?

我有许多主干模型,按集合组织并连接到它们相应的视图和/或视图集合。其中一些不属于同一集合的模型需要触发另一个模型(可能不止一个)感兴趣的事件。

我认为,推荐的处理方法是这里和其他地方描述的“全局事件调度程序/聚合器” 。

但是,我也碰巧在使用 require.js,这似乎违背了将调度程序/聚合器附加到应用程序的命名空间对象的想法——或者我在这里错了吗?

所以我的问题是:使用 require.js 如何让多个不同的主干模型触发将由另一个模型处理的事件?

0 投票
1 回答
835 浏览

prism - 通用用户控制中的 Prism 事件聚合器

在我的 wpf 应用程序中,我有几个用户控件,其中一个是用于选择特定数据类型的 TreeView。当 selectedItem 发生变化时,我会发布一个 selectionChanged 事件(使用 Prism 的 EventAggregator),订阅者将收到此事件。到目前为止,一切都很好。

现在,我开始在新视图中使用相同的用户控件,实际上是在新窗口中。当从新窗口触发 selectionChanged 事件时,两个订阅都会被触发。我想指定事件的发送者,以便订阅者可以检查事件的对象。有很多方法可以做到这一点,但到目前为止我还没有喜欢的方法。

所以问题就出来给你们了,我怎样才能做到这一点?

0 投票
1 回答
1615 浏览

c# - winforms MVP 应用程序中的自定义事件聚合器

我决定为我正在编写的 winforms MVP 应用程序构建自己的事件聚合器。目的是允许视图(用户控件)订阅来自模型的事件,否则这些模型具有它们的视图。

问题是; 由于应该有一个公共事件聚合器,并且仅在编写应该交互的用户控件的应用程序时才需要聚合器,那么公开事件聚合器的最佳方法是什么?

到目前为止我的建议:

  1. 我认为注入它会很麻烦,因为所有用户控件都必须有一个 IEventAggregator 并且聚合器对于用户控件本身来说不是必需的,只是由具有附加功能的用户控件组成的主应用程序。
  2. 使 EventAggregator 静态或单例。但是,这会带来类似的问题,即各个用户控件必须通过静态聚合器发布事件。

你有什么想法可以帮助我吗?

0 投票
1 回答
1264 浏览

events - 事件聚合器模式如何为其订阅者管理不同的发布者?

在事件聚合器模式中,发布者将事件发布到聚合器,订阅者通过聚合器订阅特定事件。

假设有 3 个订阅者SubscriberASubscriberBSubscriberC。他们都想订阅一个名为OnPowerUpEvent. OnPowerUpEvent可以由或PowerItemA触发PowerItemB。和也可以有多个实例PowerItemAPowerItemB

基于这种情况,我不明白事件聚合器模式如何能够允许订阅者订阅特定发布者发布的事件。在我看来,订阅者通常只能订阅事件OnPowerUpEvent,并且无论发布者是谁都可以响应事件。

例如,SubscriberA可能想要订阅任何实例OnPowerUpEvent发布的事件。可能想要订阅由 的特定实例发布的事件。并且可能希望订阅该事件,而不管发布者是谁。 PowerItemASubscriberBOnPowerUpEventPowerItemBSubscriberCOnPowerUpEvent

在这 3 种不同的情况下,事件聚合器模式如何管理呢?

0 投票
3 回答
1576 浏览

c# - 使用反射订阅 Prism EventAggregator 事件

我想使用反射订阅 EventAggregator 事件,因为我试图在运行时动态连接 Prism 模块之间的事件订阅。(我使用的是 Silverlight 5、Prism 和 MEF)。

我想要实现的是调用_eventAggregator.GetEvent<MyType>().Subscribe(MyAction)我的一个模块,但我被困在调用_eventAggregator.GetEvent<MyType>(). 我怎样才能从那里开始打电话Subscribe(MyAction)

假设我的 Event 课程是public class TestEvent : CompositePresentationEvent<string> { }. 我在编译时不知道这一点,但我在运行时知道类型。

这是我到目前为止所得到的:

我真的很感激一个正确方向的指针。

0 投票
2 回答
4373 浏览

c# - 我什么时候应该在事件聚合器上使用事件处理程序?

什么时候应该使用事件处理程序而不是事件聚合器?

在我的代码中,我有两个由父 ViewModel 控制的 ViewModel,我试图决定是否应该只使用事件处理程序在它们之间进行对话?还是使用事件聚合器?这将只是简单的方法调用,我不需要在它们之间传递参数。

0 投票
2 回答
340 浏览

c# - 在事件聚合器中将枚举与事件类混合

我最近尝试实现自己的简单事件聚合器。我从 MSDN 上的事件聚合器文章中获得了很多灵感。关于 MSDN 上的事件聚合器,我注意到一件事是事件实际上是它们自己的类。这根本不是一件坏事。但是,我只是觉得总是为每个小事件创建一个新的空类很尴尬。

我觉得这很尴尬的原因是因为需要为每个细粒度事件创建一个类。例如,鼠标单击事件将具有 double_click、single_click、left_click、right_click 等。所有这些都会有自己的类。一段时间后它会变得混乱。

所以在我自己的实现中,我认为我可以以这样的方式实现,其中ClickEvent是一个类,但与 Click 事件相关的所有粒度事件都将是ClickEvent. 在这种情况下,“类型”是enum. 用法如下所示:

但是,我不确定这个实现是否违背了拥有强类型事件的全部目的?现在,它似乎ClickEvent只是不同事件枚举类型的容器。