好的,所以我遇到了一个有趣的情况,答案是在逃避我。我有一个用户控件,其中一侧有一个PRISM区域连接到一个控件。我想设置该区域的初始视图,所以在模块内部,我做了类似的事情
_regionManager.RegisterViewWithRegion(StaticRegionNames.RegionName, typeof(firstView))
当我运行该程序时,它显示正常,正如我所期望的那样。现在,在按钮上单击,我使用
将该区域导航到另一个视图_regionManager.RequestNavigate(
regionName: StaticRegionNames.RegionName,
source: new Uri(viewNameToNavigateTo, UriKind.Relative))
这也有效。当我想回到初始视图(firstView)时会出现问题。
我正在尝试类似的事情:
var region = _regionManager.Region[StaticRegionNames.RegionName];
if(region.NavigationService.Journal.CanGoBack)
retgion.NavigationService.Journal.GoBack();
上面的这个电话不适用于"我只是从默认视图导航到下一个视图",但如果我再次浏览该区域到另一个视图,我就是能够通过此调用返回第二个视图。
调试后,我真的很难过,因为该区域显示它有2个视图,但CanGoBack
的值为false。
我尝试了View Injection,但由于模块在区域可见之前加载,因此无法正常工作,因此RegionManager中没有具有该名称的区域。我尝试创建一个,但那似乎没有注册到UserControl的区域。
我也试过了RegisterViewWithRegion的lambda版本,但结果完全一样。
非常感谢任何帮助!
答案 0 :(得分:2)
如果您在PRISM 5指南中查看this topic,可以找到关于此的说明(强调我的):
导航日志只能用于基于区域的导航 由区域导航服务协调的操作。如果 您使用查看发现或查看注入来实施导航 在某个区域内,导航日志将不会在更新期间更新 导航并不能用于向前或向后导航 该地区。
因此,唯一可行的方法是使用Region
的{{1}}导航到默认视图。