PRISM和事件聚合器

时间:2011-05-09 19:16:13

标签: wpf prism eventaggregator unsubscribe

我有一个PRISM WPF应用程序;我有一个PatientViewModel,在其构造函数中订阅一个事件(比如说CultureChangedEvent),然后执行一个动作。

在我的主视图模型中,我有一个ObservableCollection。

如果用户从ObservableCollection中删除了PatientViewModel实例,然后触发了CultureChangedEvent,则删除的PatientViewModel仍然在内存中并接收该事件。所以目前,在删除PatientViewModel时,我取消订阅该事件;但我想知道这是正确的方法吗?或者我错过了什么?

谢谢! →

1 个答案:

答案 0 :(得分:2)

即使从可观察集合中移除了一个对象,它仍然存在(因此它仍然存在于该事件中)。您处理此问题的方式是可接受的解决方案。另一个是将ObservableCollection公开为ReadOnlyObservableCollection,然后提供自己的添加和删除功能。在您的删除功能内取消订阅该事件,然后从您的私人“正常”ObservableCollection中删除该项目。因此,您可以在删除项目之前取消订阅该事件。