简体   繁体   中英

How can I hide the back button from certain pages in the shell?

Only on the login and notifications pages I wish that the user could not return to the previous page. On all other pages the process can proceed normally.

So far, I've only been able to disable the button click action using BackButtonBehavior IsEnabled = "False" .

NotificationsPage.xaml and LoginPage.xaml

<Shell.BackButtonBehavior>
        <BackButtonBehavior IsEnabled="False"/>
</Shell.BackButtonBehavior>

导航栏中可见的后退箭头按钮

TokenViewModel

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

App.xaml.cs

await Shell.Current.GoToAsync($"{nameof(NotificacoesPage)}", false);

AppShell.xaml

<TabBar>
        <Tab Icon="notificacao_icone.png"
             Title="Notificações">
            <ShellContent ContentTemplate="{DataTemplate local:NotificacoesPage}" />
        </Tab>

        <Tab Icon="configuracoes_icone.png"
             Title="Configurações">
            <ShellContent ContentTemplate="{DataTemplate local:ConfiguracoesPage}" />
        </Tab>
</TabBar>

AppShell.xaml.cs

Routing.RegisterRoute(nameof(LoginPage), typeof(LoginPage));
Routing.RegisterRoute(nameof(TokenPage), typeof(TokenPage));
Routing.RegisterRoute(nameof(NotificacoesPage), typeof(NotificacoesPage));
Routing.RegisterRoute(nameof(NotificacaoDetalhePage), typeof(NotificacaoDetalhePage));
Routing.RegisterRoute(nameof(ConfiguracoesPage), typeof(ConfiguracoesPage));

Here is a workaround.You could hide the whole navigationbar,then custom a NavigationBar with StackLayout to instead of it.

Something like:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="ShellNewDemo.Views.ItemDetailPage"
         Shell.NavBarIsVisible="False"   //hide the navigationbar
         >

  <ContentPage.Content>

      <StackLayout Orientation="Vertical">

        <StackLayout Orientation="Horizontal">

            //define your custom navigationbar

        </StackLayout>
        <StackLayout Orientation="Vertical">

           //content

        </StackLayout>

      </StackLayout>
    
  </ContentPage.Content>

</ContentPage>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM