如何转到Shell页面并离开菜单按钮



如果我从Shell菜单项导航到其他页面,那么我可以选择再次打开拉出菜单。如果我从里面的代码转到页面,那么左上角的菜单按钮就不在了。

await Shell.Current.GoToAsync("step");

如何从代码中打开页面,打开页面中的shell菜单按钮是什么?

如果导航到作为Shell视觉层次结构的一部分存在的页面,并按如下方式注册路由。

<ShellContent
Title="Page1"
ContentTemplate="{DataTemplate local:Page1}"
Icon="tab_about.png"
Route="about" />

它可以使用如下参数进行导航。

await Shell.Current.GoToAsync("//about");

当你导航时,汉堡图标仍然会在那里。

如果导航到Shell视觉层次结构中不存在的页面,并使用Routing.RegisterRoute进行注册,它将覆盖所有页面,汉堡图标将不会显示。但是你可以通过左上角的后退按钮返回到Shell。

Routing.RegisterRoute("step", typeof(Page2));

编辑队列总是满的!以下是我对Wendy答案的扩展:

TLDR

本质上,Hamburger Nav仅在添加或注册到Shell或其子BaseShellItem之一的页面上可见,并且因此是Shell视觉层次结构的一部分->如果该页面是通过AppShell.xaml注册的(也可以通过编程方式添加(,则该页面将被添加到BaseShellItem中,并且是Shell Visual Hierarchy的一部分。


有几种方法可以注册页面进行导航,并确定页面是否显示汉堡:

  1. 如果通过AppShell.xaml注册页面,如:
<ShellContent
Title="This is Page1"
ContentTemplate="{DataTemplate local:Page1}"
Icon="tab_about.png"
Route="Page1" />

您可以使用如下参数进行导航。

await Shell.Current.GoToAsync("//Page1");

当您进行导航时,汉堡包图标仍然存在,因为页面已添加到BaseShellItem(BaseShellItem->ShellContent(。

  1. 如果不是在AppShell.xaml中而是通过Routing注册页面:
Routing.RegisterRoute(nameof(page1), typeof(Page1));

并导航到该页面,它将覆盖所有页面,汉堡图标不会显示,因为它没有添加到BaseShellItem中。但您可以使用左上角的后退按钮返回Shell。

  1. 您可以通过将页面添加到BaseShellItem来注册页面(从Xamarin.Forms 5开始(,但不会在Shell的菜单中显示页面,并通过将页面作为AppShell.xaml中的FlyoutItem添加并使用FlyoutItemIsVisible="False"来使页面具有汉堡包导航菜单:
<FlyoutItem
Title="Stat Page"
FlyoutItemIsVisible="False"
IsEnabled="True">
<ShellContent
Title="Page1"
ContentTemplate="{DataTemplate local:Page1}"
Icon="tab_about.png"
Route="about" />
</FlyoutItem>

相关内容

  • 没有找到相关文章

最新更新