Empiezo a usar WPF con PRISM y MVVM. Un problema al que me enfrento es que no puedo encontrar un buen lugar/mejor práctica para cancelar la suscripción a eventos EventAggregator suscritos anteriormente en ViewModel. La siguiente solución, llamada Unsubscribe en el destructor, es demasiado tarde. Solo se ejecuta con la siguiente recolección de basura.Anular la suscripción a eventos de EventAggregator en 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)
{
}
}
Al registrarse para eventos también puede elegir referencias fuertes. –
Depende de mí, eso es lo que sospechaba. Creo que su segunda sugerencia, activar un comando a través de la vista, se ajusta a mis necesidades. ¡Gran respuesta! –
@ Daniel: Oops, me olvidé de eso. Fue hace mucho tiempo, cuando agregué el último evento en mis proyectos :)) –