Я очень новичок в экосистеме C # \ Prism.
Я хочу подключить модули через события, но если просто отправить событие:
_eventAggregator.GetEvent<LoginSuccessEvent>().Publish(new LoginSuccessEventArgs(user));
тогда мой обработчик событий не работает.
Как я понимаю, это происходит, потому что приемник ViewModel не создается (я проверил с точкой останова в отладчике).
Но если я перейду от отправителя события:
_regionManager.RequestNavigate(RegionNames.RootRegion, "WorksheetListView");
_regionManager.RequestNavigate(RegionNames.WorksheetDetailsRegion, "WorksheetDetailsView");
_eventAggregator.GetEvent<LoginSuccessEvent>().Publish(new LoginSuccessEventArgs(user));
Затем перед первым получателем команд RequestNavigate вызывается конструктор ViewModel.
_regionManager = regionManager;
_model = container.Resolve<WorksheetListModel>();
OpenWorksheetCommand = new DelegateCommand(OpenWorksheet);
Worksheets = _model.WorksheetList;
eventAggregator.GetEvent<LoginSuccessEvent>().Subscribe(OnLoginSuccessEvent);
Я попытался добавить регистрацию класса ViewModel в модуль приемника:
_container.RegisterType<WorksheetListViewModel>();
Но не повезло. Я не хочу добавлять эту регистрацию отправителю, потому что создается жесткая связь.
Но я хочу иметь слабую связь между modulel и выполнять навигацию из RECIEVER, но не из SENDER. Так что отправитель не будет ничего знать о получателе.
Как я могу достичь этого?
Спасибо.