ПРИЗМА и агрегатор событий - PullRequest
0 голосов
/ 09 мая 2011

У меня есть приложение PRISM WPF;и у меня есть PatientViewModel, который в своем конструкторе подписывается на событие (скажем, CultureChangedEvent) и выполняет действие.

В моей основной модели представления у меня есть ObservableCollection.

Если пользователь удаляетэкземпляр PatientViewModel из ObservableCollection, а затем запускается CultureChangedEvent, удаленная PatientViewModel все еще находится в памяти и получает событие.Поэтому в настоящее время при удалении PatientViewModel я отписываюсь от события;но мне интересно, это правильный подход?Или я что-то упустил?

Спасибо!L

1 Ответ

2 голосов
/ 09 мая 2011

Несмотря на то, что объект удален из наблюдаемой коллекции, он все еще существует (таким образом, он все еще подчиняется событию). То, как вы справляетесь с этим, является приемлемым решением. Другой способ - представить вашу ObservableCollection как ReadOnlyObservableCollection, а затем предоставить свои собственные функции добавления и удаления. Внутри функции Remove отмените подписку на событие, а затем удалите элемент из вашей личной "обычной" ObservableCollection. Таким образом, вы можете отписаться от события, прежде чем удалить элемент.

...