0

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

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

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

谢谢!大号

4

1 回答 1

2

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

于 2011-05-09T19:22:26.437 回答