正如标题所说,我IRegionNavigationJournal
的 GoBack 方法有问题。首先我的场景:
2 个 Prism 模块 1 个带有内容区域的 Prism 外壳
我只通过RegionManager.RequestNavigate("region", "ModuleName")
. 此外,我使用 ModuleName 在 unitycontainer 中注册视图和视图的 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”的条目。
一些代码片段:
寄存器类型:
container.RegisterType<object, DashboardViewModel>(new ContainerControlledLifetimeManager());
container.RegisterType<object, DashboardView>(ModuleResources.ModuleName,
new ContainerControlledLifetimeManager());
请求导航:
regionManager.RequestNavigate(ShellRegionNames.ContentRegion, ModuleResources.ModuleName);
回去:
navigationService.Journal.GoBack();
希望任何人都可以提供帮助。
提前致谢