.NET MAUI Shell - 导航后显示汉堡包图标

adi*_*nas 6 c# xamarin maui

我有几个关于显示显示弹出窗口的汉堡图标并转到上一页的问题。

我在 Visual Studio 中创建了默认应用程序并添加了第二个页面

在此输入图像描述

我在AppShell.xaml.cs中注册了第二个页面

Routing.RegisterRoute(nameof(SecondPage), typeof(SecondPage));
Run Code Online (Sandbox Code Playgroud)

在 MainPage.xaml 中,我添加了一个按钮,按下该按钮会将用户发送到第二页

await Shell.Current.GoToAsync(nameof(SecondPage), true);
Run Code Online (Sandbox Code Playgroud)

这一切都有效。但是,在第一页上我们可以看到汉堡图标 在此输入图像描述

当单击按钮到达第二页时,我们看到后退按钮并且没有汉堡包图标

在此输入图像描述

您仍然可以从左侧滑动以显示弹出窗口,但 如何在第二页上显示汉堡包图标?

我的第二个问题是,是否在弹出窗口中添加指向第二页的链接 - AppShell.xaml

<ShellContent
        Title="Second Page"
        ContentTemplate="{DataTemplate local:SecondPage}"
        Route="SecondPage" />
Run Code Online (Sandbox Code Playgroud)

单击它后,我们确实会看到汉堡包图标

在此输入图像描述

但没有后退按钮,如果您使用 Android 的后退按钮单击后退,则会退出应用程序。所以,我的第二个问题是如何使菜单上的单击行为像单击按钮一样。

Tun*_*bzy 5

这是因为浮出控件执行绝对路由,但您的代码执行相对路由并维护导航堆栈。

如果您想以编程方式获得相同的行为,则需要切换到绝对路由。

await Shell.Current.GoToAsync($"//{nameof(SecondPage)}");

阅读有关 Shell 导航的更多信息。NET MAUI 文档

  • 我发现要进行正确的导航以保留汉堡包菜单,我必须不执行 Routing.RegisterRoute() 操作,而只需在 ShellContent 元素上的 AppShell.xaml 内添加 Route="SecondPage" 然后等待 Shell.Current.GoToAsync( “//第二页”); 将使用 AppShell.xaml 中定义的结构进行导航 (2认同)