Я использую шаблон MVVM с платформой Prism 2.0 и WPF.Я столкнулся с проблемой модального окна и инициализации ViewModel с помощью событий.В моем модуле у меня есть некоторый код, который создает объект, который я затем хочу передать в мой ViewModel, чтобы представление могло привязываться к его свойствам.
Обычно я бы использовал EventAggregator для публикации события, содержащего мойобъект, на который можно подписаться в ViewModel.Однако в этом сценарии я создаю новое модальное окно, и, следовательно, ViewModel не создается вовремя, чтобы подписаться на событие, прежде чем я смогу его опубликовать.Я пытаюсь избежать передачи объекта в Window как DataContext или возврата к другим механизмам.У кого-нибудь есть решение, чтобы заставить это работать?Может быть, какой-нибудь способ заставить View загружаться перед вызовом ShowDialog или Show?
var popup= new PopUpWindow();
regionManager.RegisterViewWithRegion("MyRegion", typeof(MyView));
eventAggregator.GetEvent<NotifyObjectEvent>().Publish(myObject);
// ViewModel only created and subscribes to event when the line below is run
popup.ShowDialog();
Мой хак для выполнения этой работы заключается в следующем, но мне интересно, есть ли более элегантное решение?отсутствует?
var popup= new PopUpWindow();
regionManager.RegisterViewWithRegion("MyRegion", typeof(MyView));
popup.Show();
popup.Hide();
eventAggregator.GetEvent<NotifyObjectEvent>().Publish(myObject);
popup.ShowDialog();
Хорошо, может быть, я понял это, кажется, работает по крайней мере ...
var popup= new PopUpWindow();
regionManager.RegisterViewWithRegion("MyRegion", typeof(MyView));
RegionManager.SetRegionManager(popup, regionManager);
regionManager.AddToRegion("MyRegion", typeof(MyView));
eventAggregator.GetEvent<NotifyObjectEvent>().Publish(myObject);
popup.ShowDialog();