В моем приложении я часто создаю новые Views и ViewModels, но сохраняю те же модели. Например, я могу показать простой вид списка элементов в моем главном окне и иметь другое окно с подробной информацией о любом конкретном элементе. Окно детали можно открывать и закрывать в любое время или одновременно открывать несколько окон для разных элементов в списке.
Следовательно, для данного объекта модели может быть более одного ViewModel, и они должны быть обновлены с изменениями из других мест. (Я использую INotifyPropertyChanged
для своих моделей.) Я хочу избавиться от ViewModels, когда я закончил с ними, т.е., Когда окно детали закрыто.
public DetailViewModel(MyDetailModel detailModel)
{
// Retain the Detail Model
this.model = detailModel;
// Handle changes to the Model not coming from this ViewModel
this.model.PropertyChanged += model_PropertyChanged; // Potential leak?
}
Насколько я понимаю, обработчик события заставит модель сохранить ссылку на ViewModel и не будет получать сбор мусора.
1) Правильно ли это? Как я могу узнать, присутствуют ли эти ссылки?
2) Как мне определить, что ViewModel больше не требуется и отписывается от событий?