【问题标题】:MasterDetail and NavigationPage deeplinking in Prism FormsPrism 表单中的 Master Detail 和 NavigationPage 深度链接
【发布时间】:2016-09-08 09:58:56
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: xamarin.forms prism


    【解决方案1】:

    实际上,沙盒应用确实在 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 代码库并删除页面类型检查。

    【讨论】:

    • 啊哈,我当时走在正确的轨道上,我已经分叉了 Prism 代码库以了解 PageNavigationService 的内部行为。虽然不知道 Xamarin.Forms 中的那个错误。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 2023-04-08
    • 1970-01-01
    • 2011-08-08
    相关资源
    最近更新 更多