棱镜 IRegionNavigationJournal.GoBack 不起作用
Posted
技术标签:
【中文标题】棱镜 IRegionNavigationJournal.GoBack 不起作用【英文标题】:Prism IRegionNavigationJournal.GoBack not working 【发布时间】: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();
希望任何人都可以提供帮助。
提前致谢
【问题讨论】:
【参考方案1】:似乎RegisterType<T>
方法中的字符串必须与视图的类名相同。 RequestNavigate(RegionName, ViewName)
适用于不同的字符串,而 GoBack()
则不适用。
【讨论】:
以上是关于棱镜 IRegionNavigationJournal.GoBack 不起作用的主要内容,如果未能解决你的问题,请参考以下文章