棱镜导航 - 上一个和下一个视图

时间:2014-09-20 11:21:37

标签: c# wpf mvvm prism-4

我正在使用prism和MVVM开发一个wpf应用程序。

我有一个主shell,它有两个区域:菜单区域和主区域。

我试图在菜单区域(包含MenuView)中实现一个BACK和FORWARD按钮,就像我们在任何浏览器中一样: 让我们说我有5个观看次数:View1,View2,View3,View4,View5 当我启动应用程序时,View1将显示在主区域中。目前,我希望禁用这些按钮。 现在,我选择导航到View3:View3显示在主区域中,然后Back btn变为启用(前进btn保持禁用状态)。然后,我导航到View2,它显示在主区域中。

现在,当我单击Back btn时,View 3将显示在Main Region中,并且Forward btn将变为启用状态。 我单击Forward,显示Now View 2,并且Forward btn被禁用。

我已尝试使用导航日志,如以下链接所述: http://msdn.microsoft.com/en-us/library/gg430861(v=pandp.40).aspx

但没有成功,因为我做了他们在MenuViewModel中提到的内容,这是在整个应用程序生命周期中在菜单区域中显示的唯一视图(并且只有主区域切换视图)。这就是为什么,OnNavigatedTo方法永远不会被调用的原因,因为我永远不会调用MenuView,这会导致navigationService始终为null。

重点是我想在MenuView中使用这些按钮 - 菜单区域中显示的唯一视图用于所有应用程序生命周期。后退和前进按钮在主区域中的视图之间导航 - 来回。会建议您的建议。

3 个答案:

答案 0 :(得分:6)

这就是我解决它的方法:

在MenuViewModel中,我引用了RegionManager,因此我可以访问主区域及其导航服务:

var mainregion = _regionManager.Regions[RegionNames.mainregion];
mainregion.NavigationService.Journal.GoForward();

答案 1 :(得分:1)

您可以使用前置或前置区域的底部代码

xml文件

argument2

ViewModel C#

<Button Command="{Binding GoBackCommand}" Content="GoBack" />

答案 2 :(得分:-1)

var regionManager = ServiceLocator.Current.GetInstance<IRegionManager>();
var moduleAView = new Uri("ModuleAContentView", UriKind.Relative);
regionManager.RequestNavigate("ContentRegion", moduleAView);

您可以通过上面的代码在区域之间导航