Zaczynam używać WPF z PRISM i MVVM. Jednym z problemów, przed którymi stoję, jest to, że nie mogę znaleźć dobrego miejsca/najlepszej praktyki do anulowania subskrypcji EventAggregator wcześniej subskrybowanych w ViewModel. Następujące rozwiązanie - wywołanie funkcji "Anuluj subskrypcję" w destruktorze - jest o wiele za późno. Działa tylko z następnym zbiorem śmieci.Anulowanie subskrypcji zdarzeń EventAggregator w ViewModels
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)
{
}
}
Podczas rejestrowania się w wydarzeniach możesz także wybrać silne referencje. –
To zależy od mnie - podejrzewam. Myślę, że twoja druga sugestia - wywołanie polecenia w widoku - pasuje do moich potrzeb. Świetna odpowiedź! –
@Daniel: Ups, zapomniałem o tym. To było dawno temu, kiedy dodałem ostatnie wydarzenie w moich projektach :)) –