Я начинаю использовать WPF с PRISM и MVVM. Одна из проблем, с которой я столкнулся, заключается в том, что я не могу найти подходящего места / передовой практики для отмены подписки на события EventAggregator, ранее подписанные в ViewModel. Следующее решение - вызов Unsubscribe в деструкторе - слишком поздно. Он просто работает со следующей сборкой мусора.
public class ViewModel : ViewModelBase
{
public ViewModel()
{
var eventAggregator = ServiceLocator.Current.GetInstance<IEventAggregator>();
eventAggregator.GetEvent<SeriesSelectionChangedEvent>().Subscribe(OnSeriesSelectionChanged);
}
~ViewModel()
{
var eventAggregator = ServiceLocator.Current.GetInstance<IEventAggregator>();
eventAggregator.GetEvent<SeriesSelectionChangedEvent>().Unsubscribe(OnSeriesSelectionChanged);
}
void OnSeriesSelectionChanged(SeriesSelectionChangedEventArgs e)
{
}
}