我正在测试Prism Forms框架的深层链接功能。我目前的情况是我有MasterDetailPage,菜单为Master。单击菜单项时,“详细信息”应更改为具有干净NavigationPage作为容器的特定页面。
当我检查Sandbox example的Prism Forms时,它会显示MasterDetail导航的示例,但不包括导航页面。
所以我在启动时有这个(绝对)深层链接结构:/ MasterDetailPage / NavigationPage / MyFirstPage
然后我希望第二个菜单项链接到一个新的NavigationPage: / MasterDetailPage / NavigationPage / MySecondPage
我目前的解决方法是进行绝对的深层链接,但我想知道是否有更好的方法? Prism PageNavigationService检查段类型是否与当前详细信息类型相同。但由于这些都是NavigationPages,它会尝试在现有的NavigationPage中添加新页面。那时它还会杀死菜单图标(至少在iOS上)。
答案 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代码库并删除页面类型检查。