棱镜6嵌套区域导航

时间:2016-02-22 17:01:22

标签: c# wpf navigation prism

我在一个地区内有一个地区。主要区域(包含所有其他区域)命名为 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。

我也附上图片,这样我的解释就不那么容易混淆了。

主视图/主窗口 enter image description here

第二个视图,我想在嵌套区域下显示一些细节 enter image description here

1 个答案:

答案 0 :(得分:0)

所以最后我必须做以下调整:

从Bootstrapper中完全删除以下行(我不明白为什么我不需要注册它)。

contentRegion.RegisterViewWithRegion("SettingsRegion", typeof(SettingsView_MainPage));

之后我必须在我的SecondPageViewModel下稍作修改;最初我是直接导航到构造函数下的子页面,但是一旦我实现INavigationAware并将导航移动到OnNavigatedTo,它就突然开始工作了。