【问题标题】:Prism IRegionNavigationJournal.GoBack not working棱镜 IRegionNavigationJournal.GoBack 不起作用
【发布时间】:2013-02-12 10:46:43
【问题描述】:

正如标题所说,IRegionNavigationJournal 的 GoBack 方法有问题。首先是我的场景:

2个棱镜模块 1个带有内容区域的棱镜壳

我只通过RegionManager.RequestNavigate("region", "ModuleName") 导航。此外,我在 unitycontainer 中使用 ModuleName 注册视图和视图的 ViewModel

其中一个模块是仪表板模块,其中第二个模块(以及每个其他模块)注册了一个 navigateto 命令。此命令请求导航到模块 2。

一切正常,仪表板请求导航到内容区域,显示并呈现模块 2 的 navigateto 命令。

点击第二个模块的navigationto命令后,第二个模块显示在内容区域中。

此外,每个模块都会将 GoBack 命令注入 shell 以执行 IRegionNavigationJournal.GoBack 以及 OnNavigateTo 方法中的模块特定内容。

每个 ViewModel 都实现 INavigationAware(确切地说,这是在基本视图模型中实现的)。在 OnNavigatedTo 中,我保存了 NavigatioService。在发出模块 2 的 GoBack 命令后,执行的最后一个操作是调用模块 2 的 OnNavigateFrom。仪表板的 OnNavigateTo 永远不会被调用。模块 2 的视图停留在 contentregion 中,仅此而已。

如果我调试应用程序,IRegionNavigationJournal 的后台堆栈会显示 1 个带有 Uri "DashBoard" 的条目。

一些代码sn-ps:

注册类型:

container.RegisterType<object, DashboardViewModel>(new  ContainerControlledLifetimeManager());
container.RegisterType<object, DashboardView>(ModuleResources.ModuleName,
            new ContainerControlledLifetimeManager());

请求导航:

regionManager.RequestNavigate(ShellRegionNames.ContentRegion, ModuleResources.ModuleName);

返回:

 navigationService.Journal.GoBack();

希望任何人都可以提供帮助。

提前致谢

【问题讨论】:

    标签: c# .net wpf navigation prism


    【解决方案1】:

    似乎RegisterType&lt;T&gt; 方法中的字符串必须与视图的类名相同。 RequestNavigate(RegionName, ViewName) 适用于不同的字符串,而 GoBack() 则不适用。

    【讨论】:

      猜你喜欢
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      • 2019-05-22
      • 2011-07-04
      • 1970-01-01
      • 2019-04-03
      • 2021-09-07
      • 1970-01-01
      相关资源
      最近更新 更多