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

Dim*_*maK 3 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中使用这些按钮 - 菜单区域中显示的唯一视图,用于所有应用程序生命周期.后退和前进按钮在主区域中的视图之间导航 - 来回.会建议您的建议.

Dim*_*maK 5

这就是我解决它的方式:

从MenuViewModel,我有一个引用RegionManager,所以我可以访问主区域和它的导航服务:

var mainregion = _regionManager.Regions[RegionNames.mainregion];
mainregion.NavigationService.Journal.GoForward();
Run Code Online (Sandbox Code Playgroud)