1

我有一个带有 3 或 4 个模块的 wpf 复合应用程序,这些模块将始终被加载。在我的外壳中,我有一个带有按钮的工具栏,可以从这些模块中激活相应的视图。我将一个 IEventAggregator 注入到 shell 呈现器中,以便当按下按钮时,我可以发布相应模块控制器已订阅的事件。当事件被捕获时,控制器将激活它的视图。

无论如何,这就是理论,实际上我的控制器没有捕捉到事件。发布或订阅没有错误。起初我认为 eventAggregator 不一样可能存在问题,但事实并非如此,并且事件在发布时有订阅者。

谁能想到事件没有被抓住的原因?(或者任何关于以不同方式展示我的观点的建议也会有所帮助!)

4

1 回答 1

1

你有你的模块控制器'活着'吗?您是使用弱委托引用还是强引用订阅事件?似乎正在发生的事情是您的模块控制器正在被处置,因此事件没有被捕获。

要使用强引用进行订阅,请在订阅方法上使用keepSubscriberReferenceAlive选项。

您可以查看文档中的事件聚合器文章,该文章可能会提供更多见解。

如果这仍然不起作用,您可以与我分享您的复制代码,以便我看一下吗?(hotmail dot com 的 ezequieljadib)

谢谢,

埃齐奎尔·贾迪布

于 2009-07-11T12:31:33.463 回答