棱镜IRegionNavigationJournal.GoBack不工作

本文关键字:工作 GoBack IRegionNavigationJournal 棱镜 | 更新日期: 2023-09-27 18:01:28

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

2 Prism模块1棱镜壳带内容区

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

其中一个模块是仪表板模块,第二个模块(以及后面的每个模块)在其中注册一个navigateto命令。该命令请求导航到模块2。

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

单击第二个模块的navigateto命令后,第二个模块将显示在内容区域。

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

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

如果我调试应用程序,IRegionNavigationJournal的backstack显示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();

希望大家都能帮忙。

Thanks in advance

棱镜IRegionNavigationJournal.GoBack不工作

似乎RegisterType<T>方法中的字符串必须与视图的类名相同。RequestNavigate(RegionName, ViewName)可以处理不同的字符串,而GoBack()不能。