MasterDetail和NavigationPage在Prism Forms中进行深层链接

时间:2016-05-12 13:55:28

标签: xamarin.forms prism

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

实际上,Sandbox应用确实在MasterDetail中使用了NavigationPages:https://github.com/PrismLibrary/Prism/blob/master/Sandbox/Xamarin/HelloWorld/HelloWorld/HelloWorld/Views/MyMasterDetail.xaml

Prism重复使用详细信息页面是出于性能原因,但它并不像您认为的那样有效。虽然它确实将新页面添加到NavigationPage的NavigationStack,但它也会从堆栈中删除上一页。这使NavigationStack保持正常状态。

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

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