У меня есть всплывающее окно с регионом, который содержит другой регион. Это всплывающее окно вызывается с помощью методологии WPF Prism(MEF) InteractionRequest. Структура выглядит так:
PopUpUserControl
- ContentControl : Region(UserCatalogsCreateRegion)
- PopUpStageUserControl
- StackPanel
-ContentControl : Region(UserCatalogsCreateStackRegion) <--Disappearing Region
Проблема проявляется так. Когда приложение запускается и работает нормально, я могу перечислить регионы в приложении и вижу, что RegionManager содержит регион с именем «UserCatalogsCreateStackRegion».
Теперь, когда я нажимаю кнопку, которая запускает InteractionRequest для PopUpCreation, я вижу, что список регионов больше не содержит «UserCatalogsCreateStackRegion». Я убедился, что что-то удаляет мой регион, потому что я добавил CollectionListener в свойство Regions диспетчера регионов, и как только создается всплывающее окно, моя точка останова срабатывает, а Notif..Action — «Удалить», а OldItem — это регион. обсуждаемый.
Регион TL; DR исчезает из RegionManager.Regions, когда создается и вызывается всплывающее окно, содержащее указанный регион.
Любая помощь приветствуется. И я постараюсь ответить на как можно больше других вопросов, так как МНОГО всего может пойти не так с региональным менеджером.
ИЗМЕНИТЬ
Ссылки Брайана Лагунаса указывали прямо на избитое решение. Это было решением. Мой окончательный рабочий код для PopUpStageControl выглядит так, где ContentControl — это регион, который продолжал «исчезать»:
[ImportingConstructor]
public PopUpStageUserControl(IRegionManager regionManager)
{
InitializeComponent();
this.regionManager = regionManager;
//Fix Begin
RegionManager.SetRegionName(ContentControl, AppRegions.UserCatalogsCreateStackRegion);
RegionManager.SetRegionManager(ContentControl, regionManager);
//Fix End
RegionManager.SetRegionManager(this, regionManager);
RegionManager.UpdateRegions();
}