Я использую Prism, MEF (MEF Bootstrapper) и WPF. Я новичок в этом, и у меня есть очень простое приложение, которое я пытаюсь заставить работать.
У меня есть два региона в главном окне (оболочка), которые работают нормально. Я вижу их в окне во время выполнения и могу получить к ним доступ через TheRegionManager.Regions ["regionName"] из кода внутри окна оболочки и в других окнах. Для этого я использую:
[Импортировать]
public IRegionManager TheRegionManager {private get; установить;}
Теперь я хочу сделать то же самое для другого окна в приложении. У меня есть две области в нем, и я настраиваю их из XAML, и я делаю:
TheRegionManager.RegisterViewWithRegion("AdsMainRegion", typeof(Ads));
TheRegionManager.RegisterViewWithRegion("AdDetailsRegion", typeof(AdsDetail));
Чтобы зарегистрировать представления как в других 2 регионах от Shell. Это работает, потому что я могу видеть представления, загруженные в регионах во время выполнения. Проблема в том, что я не могу получить доступ к регионам из кода:
Импортированный TheRegionManager равен нулю, мне нужно сделать
TheRegionManager = ServiceLocator.Current.GetInstance<IRegionManager>(); wich returns a region manager that contain only the 2 regions from the Shell window but not the 2 regions from this other window that I want.
I'm sure that I'm missing something. Maybe I need to add some code to the bootstrapper. Or I should add this other window as a module in the catalog? Why does it work fine in Shell window and not in this other window?