Xamarin Shell 具有子页面的层次结构
Xamarin Shell hierarchy with child page
我在 Xamarin Shell v5 应用程序中指定了一个复杂的页面结构。我有一个带有以下结构的弹出项目的弹出窗口:
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
<ShellContent>
<local:MainPage...
</ShellContent>
<ShellContent>
<local:Page1...
</ShellContent>
<ShellContent>
<local:Page2...
</ShellContent>
</FlyoutItem>
当我启动应用程序时,MainPage 默认显示。到目前为止一切顺利。
弹出窗口显示三个页面。也不错
当我点击 Page2 弹出窗口时,会显示 那个 页面。但是不会创建导航堆栈,这意味着它还会显示汉堡菜单(而不是汉堡图标所在的后退按钮)。
我想让 Page2 成为“子页面”(导航方式),这样当用户点击 Page2 弹出按钮时,顶部会显示一个后退按钮,以便用户可以返回主页。
我一直在前后阅读文档,无法弄清楚如何在视觉 shell 层次结构中执行此操作。
我认为它与路线有关,但我不确定如何指定路线以便 Page2 成为 'sub-page'(或任何词)。
有人知道怎么做吗?这适用于 iOS 和 Android.
我不希望像我在许多示例中看到的那样将选项卡显示在屏幕底部。只是一个整洁、干净的弹出菜单。
如果页面仍在Shell层次结构中(FlyoutItem
中的第2页),汉堡包图标将始终显示。
您可以使用下面的代码注册 Shell 视觉层次结构中不存在的页面。然后当您导航到这些页面时,您可以使用后退按钮返回。
Routing.RegisterRoute("page2", typeof(Pages));
导航:
await Shell.Current.GoToAsync("page2");
最后我用MenuItems而不是FlyoutItems解决了这个问题。在每个 MenuItem 的回调中,我调用 Shell.Current.GoToAsync("");
将页面作为 child 打开,即可以执行后退导航。
由于菜单项可以设置样式(就像弹出项一样),因此它在设备上看起来不错。这是一种解决方法,但我很满意。
我在 Xamarin Shell v5 应用程序中指定了一个复杂的页面结构。我有一个带有以下结构的弹出项目的弹出窗口:
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
<ShellContent>
<local:MainPage...
</ShellContent>
<ShellContent>
<local:Page1...
</ShellContent>
<ShellContent>
<local:Page2...
</ShellContent>
</FlyoutItem>
当我启动应用程序时,MainPage 默认显示。到目前为止一切顺利。
弹出窗口显示三个页面。也不错
当我点击 Page2 弹出窗口时,会显示 那个 页面。但是不会创建导航堆栈,这意味着它还会显示汉堡菜单(而不是汉堡图标所在的后退按钮)。
我想让 Page2 成为“子页面”(导航方式),这样当用户点击 Page2 弹出按钮时,顶部会显示一个后退按钮,以便用户可以返回主页。
我一直在前后阅读文档,无法弄清楚如何在视觉 shell 层次结构中执行此操作。 我认为它与路线有关,但我不确定如何指定路线以便 Page2 成为 'sub-page'(或任何词)。
有人知道怎么做吗?这适用于 iOS 和 Android.
我不希望像我在许多示例中看到的那样将选项卡显示在屏幕底部。只是一个整洁、干净的弹出菜单。
如果页面仍在Shell层次结构中(FlyoutItem
中的第2页),汉堡包图标将始终显示。
您可以使用下面的代码注册 Shell 视觉层次结构中不存在的页面。然后当您导航到这些页面时,您可以使用后退按钮返回。
Routing.RegisterRoute("page2", typeof(Pages));
导航:
await Shell.Current.GoToAsync("page2");
最后我用MenuItems而不是FlyoutItems解决了这个问题。在每个 MenuItem 的回调中,我调用 Shell.Current.GoToAsync("");
将页面作为 child 打开,即可以执行后退导航。
由于菜单项可以设置样式(就像弹出项一样),因此它在设备上看起来不错。这是一种解决方法,但我很满意。