.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 ));
Другие вопросы по тегам