我在一个地区内有一个地区。主要区域(包含所有其他区域)命名为 ContentRegion ,另一个用于显示部分信息的区域命名为 SettingsRegion 。
在我的引导程序下,我定义了以下内容:
Prism.Regions.IRegionManager contentRegion = Container.TryResolve<Prism.Regions.IRegionManager>();
#region Register Multiple Regions
//contentRegion.RegisterViewWithRegion("ContentRegion", typeof(MainWindow));
contentRegion.RegisterViewWithRegion("SettingsRegion", typeof(SettingsView_MainPage));
#endregion
我可以从我的ContentRegion导航到SettingsRegion而不会出现如下问题:
_regionManager.RequestNavigate("ContentRegion", Experiences.Navigation.SettingsView_MainPage.ToString());
_regionManager.RequestNavigate("SettingsRegion", Experiences.NavigationSettings.SettingsView_ShiftSettings.ToString());
一切都很好,我可以同时看到两个视图(内容)。但是,当我尝试导航回主页面时,如下面的
_regionManager.RequestNavigate("ContentRegion", Experiences.Navigation.MainPage.ToString());
它给我以下错误:
{"Region with the given name is already registered: SettingsRegion"}
我已阅读多篇关于嵌套区域的文章,但我无法实现。我可能还应该提到我也在使用Unity。
我也附上图片,这样我的解释就不那么容易混淆了。
答案 0 :(得分:0)
所以最后我必须做以下调整:
从Bootstrapper中完全删除以下行(我不明白为什么我不需要注册它)。
contentRegion.RegisterViewWithRegion("SettingsRegion", typeof(SettingsView_MainPage));
之后我必须在我的SecondPageViewModel下稍作修改;最初我是直接导航到构造函数下的子页面,但是一旦我实现INavigationAware
并将导航移动到OnNavigatedTo
,它就突然开始工作了。