4

正如标题所说,我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();

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

提前致谢

4

1 回答 1

1

似乎RegisterType<T>方法中的字符串必须与视图的类名相同。ARequestNavigate(RegionName, ViewName) 适用于不同的字符串,但GoBack()不适用。

于 2013-03-11T10:04:32.023 回答