【问题标题】:How to navigate to a view in a region in Prism taking in account namespace如何在考虑命名空间的情况下导航到 Prism 区域中的视图
【发布时间】:2020-01-03 18:21:03
【问题描述】:

我有一个区域,注册了多个视图。

问题是它们具有相同的名称但不同的命名空间。所以直到现在,我都在做这个

_regionManager.RequestNavigate(RegionsNames.MainSections, "StartView");

但这行不通,因为在我的情况下,我已经:

  • A.B.C.Something.RootView
  • A.B.C.SomethingElse.RootView
  • A.B.C.SomethingElseElse.RootView

您如何要求导航到此?

他们的啤酒注册是这样的:

        _regionManager.RegisterViewWithRegion(RegionsNames.MainSections, typeof(A.B.C.Something.RootView ));
        _regionManager.RegisterViewWithRegion(RegionsNames.MainSections, typeof(A.B.C.SomethingElse.RootView));
        _regionManager.RegisterViewWithRegion(RegionsNames.MainSections, typeof(A.B.C.SomethingElseElse.RootView));

我不想重命名它,我们有几个具有相同结构(因此名称)的模块。

【问题讨论】:

  • RegisterViewWithRegion 不注册导航,它立即将视图放入区域中
  • @Haukinger 对不起,你说得对,这个视图被放在标签视图中,我正在寻找激活正确的标签。
  • 这就是导航的用途。将 tabcontrol-region 导航到所需的选项卡将创建该选项卡(如果它以前不存在),或者显示该选项卡(如果它已经存在)。
  • @Haukinger 但这代表了我的应用程序的 4 个部分,默认情况下它们需要全部显示,这可以通过导航完成而不需要导航吗?
  • 在我的应用程序中,我通常在OnInitialized 中使用RequestNavigate("main-region", "initial screen"),我看不出RequestNavigate( "main-tabs", "tab1" ); RequestNavigate( "main-tabs", "tab2"); ... 有问题,否则,不,没有导航的导航是不可能的;-)

标签: wpf xaml navigation prism


【解决方案1】:

您可以在调用 RegisterForNavigation 时为类型提供唯一名称,通常在 IModuleRegisterTypes 方法中:

containerRegistry.RegisterForNavigation<A.B.C.SomethingElse.RootView>("somethingelse_rootview");

然后您可以使用此名称导航到视图:

_regionManager.RequestNavigate(RegionsNames.MainSections, "somethingelse_rootview");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多