棱镜 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&lt;T&gt; 方法中的字符串必须与视图的类名相同。 RequestNavigate(RegionName, ViewName) 适用于不同的字符串,而 GoBack() 则不适用。

【讨论】:

以上是关于棱镜 IRegionNavigationJournal.GoBack 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

matplotlib 中的棱镜

棱镜中的查询

密码学系列 - 棱镜门

密码学系列 - 棱镜门

棱镜得到所有的树

中继棱镜 graphql 更新存储