2016-05-12 54 views
3

我正在测试Prism Forms框架的深层链接功能。我目前有一种情况,我有一个MasterDetailPage,菜单是Master。当我点击菜单项时,详细信息应该更改为具有干净的NavigationPage作为容器的特定页面。MasterDetail和NavigationPage在Prism Forms中的深度链接

当我检查Prism Forms的Sandbox example时,它显示MasterDetail导航的示例,但不包括导航页面。

所以我必须在启动这个(绝对值)深层链接结构:/ MasterDetailPage/NavigationPage/MyFirstPage

然后我想第二个菜单项链接到一个新的NavigationPage: /MasterDetailPage/NavigationPage/MySecondPage

我目前的解决方法是做绝对的深度链接,但我想知道是否有更好的方法? Prism PageNavigationService检查段类型是否与当前的细节类型相同。但由于这些都是NavigationPages,它会尝试在已存在的NavigationPage中添加新页面。那时它也会杀死菜单图标(至少在iOS上)。

回答

2

其实,沙盒应用程序不会在MasterDetail使用NavigationPages:https://github.com/PrismLibrary/Prism/blob/master/Sandbox/Xamarin/HelloWorld/HelloWorld/HelloWorld/Views/MyMasterDetail.xaml

棱镜重用性能方面的原因的详细信息页面,但像你想象的那样这是行不通的。虽然它将新页面添加到NavigationPage的NavigationStack,但它也会从堆栈中移除前一页。这使NavigationStack保持在适当的状态。

您看到的图标行为是由于Xamarin.Forms中已确认的错误。你可以在这里关注这个问题:https://bugzilla.xamarin.com/show_bug.cgi?id=41038

只要Xamarin修复了这个错误,我就会将修复发布到Nuget上。与此同时,解决此问题的唯一方法是分叉Prism代码库并删除页面类型检查。

+0

Aha,我在正确的轨道上,我已经派生了Prism代码库,以了解PageNavigationService的内部行为。不知道Xamarin.Forms中的那个错误。谢谢你的帮助。 –