微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有子页面的 Xamarin Shell 层次结构

如何解决带有子页面的 Xamarin Shell 层次结构

我在 Xamarin Shell v5 应用程序中指定了一个简单的页面结构。我有一个浮出控件,其中包含以下结构的浮出控件:

<FlyoutItem FlyoutdisplayOptions="AsMultipleItems">
<ShellContent>
    <local:MainPage...
</ShellContent>
<ShellContent>
    <local:Page1...
</ShellContent>
<ShellContent>
    <local:Page2...
</ShellContent>
</FlyoutItem>

当我启动应用程序时,MainPage 显示认值。到目前为止一切顺利。

弹出窗口显示三个页面。也不错。

当我点击 Page2 弹出按钮时,会显示那个页面。但不会创建导航堆栈,这意味着它还会显示汉堡菜单(而不是汉堡图标所在的后退按钮)。

我希望 Page2 成为“子页面”(导航方式),这样当用户点击 Page2 弹出按钮时,顶部会显示一个后退按钮,以便用户可以返回主页。

我一直在前后阅读文档,但无法弄清楚如何在可视化外壳层次结构中执行此操作。 我认为它与路由有关,但我不确定如何指定路由,以便 Page2 成为“子页面”(或其他任何词)。

有人知道怎么做吗?这适用于 iOS 和 Android。

正如我在许多示例中看​​到的那样,我不希望将选项卡显示在屏幕底部。只是一个整洁干净的弹出菜单

解决方法

如果页面仍在 Shell 层次结构中(FlyoutItem 中的 page2),则汉堡包图标将始终显示。

您可以使用下面的代码来注册 Shell 视觉层次结构中不存在的页面。然后当您导航到这些页面时,您可以使用后退按钮返回。

 Routing.RegisterRoute("page2",typeof(Pages));

导航:

await Shell.Current.GoToAsync("page2");
,

最后我使用 MenuItems 而不是 FlyoutItems 解决了这个问题。在每个 MenuItem 的回调中,我调用 Shell.Current.GoToAsync("");,它将页面作为 child 打开,即可以执行返回导航。 而且由于菜单项可以设置样式(就像弹出式项一样),它在设备上看起来很不错。这是一种解决方法,但我很满意。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。