Wpf 棱镜和事件聚合器

Wpf 棱镜和事件聚合器,wpf,prism,eventaggregator,unsubscribe,Wpf,Prism,Eventaggregator,Unsubscribe,我有一个PRISM WPF应用程序;我有一个PatientViewModel,它在构造函数中订阅一个事件(比如CultureChangedEvent),并执行一个操作 在我的主视图模型中,我有一个可观察的集合 如果用户从ObservaleCollection中删除PatientViewModel实例,然后触发CultureChangedEvent,则删除的PatientViewModel仍在内存中并接收事件。因此,目前,当删除PatientViewModel时,我会取消该活动的订阅;但我想知道这

我有一个PRISM WPF应用程序;我有一个PatientViewModel,它在构造函数中订阅一个事件(比如CultureChangedEvent),并执行一个操作

在我的主视图模型中,我有一个可观察的集合

如果用户从ObservaleCollection中删除PatientViewModel实例,然后触发CultureChangedEvent,则删除的PatientViewModel仍在内存中并接收事件。因此,目前,当删除PatientViewModel时,我会取消该活动的订阅;但我想知道这是正确的方法吗?还是我遗漏了什么

谢谢!
L

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