PRISM 및 MVVM을 사용하여 WPF를 사용하기 시작합니다. 내가 직면 한 한가지 문제는 이전에 ViewModel에 가입 한 EventAggregator 이벤트를 구독 취소하기에 좋은 장소/모범 사례를 찾을 수 없다는 것입니다. 소멸자에서 탈퇴를 호출하는 다음 해결책은 너무 늦습니다. 다음 가비지 콜렉션으로 실행 중입니다.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)
{
}
}
이벤트 등록 중에 강력한 참조를 선택할 수도 있습니다. –
그것은 내게 달렸습니다. 그것이 내가 의심했던 것입니다. 내 생각에 두 번째 제안 - 시야를 통한 명령 실행 -이 내 필요에 부합한다고 생각합니다. 좋은 대답! –
@Daniel : 죄송합니다. 그것은 오래 전, 내 프로젝트에서 마지막 이벤트를 추가했을 때였습니다 :)) –