2011-05-09 73 views
0

我有一個PRISM WPF應用程序;我有一個PatientViewModel,在它的構造函數中訂閱一個事件(讓我們說CultureChangedEvent),並執行一個動作。PRISM和事件聚合器

在我的主視圖模型中,我有一個ObservableCollection。

如果用戶從ObservableCollection中刪除PatientViewModel實例,然後觸發CultureChangedEvent,則刪除的PatientViewModel仍在內存中並接收該事件。因此,當前,在刪除PatientViewModel時,我退訂該事件;但我想知道這是正確的方法嗎?或者我錯過了什麼?

謝謝! L

回答

2

即使對象從可觀察集合中移除,它仍然存在(因此它仍然描述事件)。你處理這個問題的方式是一個可接受的解決方案。另一個是將ObservableCollection公開爲ReadOnlyObservableCollection,然後提供您自己的添加和刪除功能。在您的Remove函數中取消訂閱該事件,然後從您的私人「普通」ObservableCollection中刪除該項目。因此,您可以在刪除該項目之前取消訂閱該事件。