0

我在 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。

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

4

2 回答 2

2

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

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

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

导航:

await Shell.Current.GoToAsync("page2");
于 2021-01-20T07:01:15.713 回答
0

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

于 2021-01-28T08:42:46.817 回答