.Net MAUI — опция всплывающего меню «Страница\Просмотр загрузки» отсутствует
У меня есть простое приложение Maui. У меня есть всплывающее меню, которое хорошо работает и обеспечивает переход к необходимым представлениям. Однако, когда я пытаюсь загрузить представление (UserHomeScreen) из события нажатия кнопки в другом представлении (LoginScreen), значок всплывающего меню не появляется (хотя кнопка «Назад» появляется), даже если он появляется, если я загружаю представление из всплывающего меню. ..
Мой XAML (App.Shell.xaml):
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems" Route="ParentRoute" >
<ShellContent
Title="Login"
ContentTemplate="{DataTemplate local:Views.LoginScreen}"/>
</FlyoutItem>
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems" Route="ParentRoute">
<ShellContent
Title="Home Screen"
ContentTemplate="{DataTemplate local:Views.UserHomeScreen}"/>
</FlyoutItem>
Мой код (AppShell.cs):
public AppShell()
{
InitializeComponent();
Routing.RegisterRoute(nameof(LoginScreen), typeof(LoginScreen));
Routing.RegisterRoute(nameof(UserHomeScreen ), typeof(UserHomeScreen ));
}
Мой XAML (LoginScreen.xaml):
<Button x:Name="btnLoginOK" Text=" OK" Background="White" TextColor="Blue" WidthRequest="100" HorizontalOptions="End" Clicked="btnLoginOK_Clicked" />
Мой код (LoginScreen.xaml.cs):
private async void btnLoginOK_Clicked(object sender, EventArgs e)
{
await Shell.Current.GoToAsync(nameof(UserHomeScreen));
}
Но по какой-то причине, если я загружаю UserHomeScreen из всплывающего меню, я получаю значок всплывающего меню. Если я загружу UserHomScreen нажатием кнопки (btnLoginOK_Clicked), я не...
Есть идеи, что мне не хватает или делаю неправильно??
1 ответ
Вот правильный способ навигации, сохраняющий всплывающее меню (значок гамбургера) с помощью кнопки. Обратите внимание, что пример кода гарантирует согласованность на трех платформах: Android, iOS и Windows.
<FlyoutItem Title="Login" >
<Tab>
<ShellContent
Title="Login"
ContentTemplate="{DataTemplate local:Views.LoginScreen}" Route="LoginScreen"/>
</Tab>
</FlyoutItem>
<FlyoutItem Title="Home Screen">
<Tab>
<ShellContent
Title="Home Screen"
ContentTemplate="{DataTemplate local:Views.UserHomeScreen}" Route="UserHomeScreen"/>
</Tab>
</FlyoutItem>
private async void btnLoginOK_Clicked(object sender, EventArgs e)
{
await Shell.Current.GoToAsync($"//{nameof(UserHomeScreen)}");
}
И прокомментируйте ниже в AppShell.cs:
//Routing.RegisterRoute(nameof(LoginScreen), typeof(LoginScreen));
//Routing.RegisterRoute(nameof(UserHomeScreen), typeof(UserHomeScreen ));