Xamarin.Forms Comment désactiver le bouton Retour dans la barre de navigation

user3345645

J'utilise Xamairn.Forms , Comment puis-je désactiver le bouton Retour dans la barre de navigation lors de l' ViewListactualisation.

En fait, j'utilise le code suivant pour désactiver le bouton de retour par défaut, mais pour le moment, j'essaie de trouver aussi pour désactiver le bouton de retour de la barre de navigation

 protected override bool OnBackButtonPressed()
   {
     if (ListView.IsRefreshing)
         return true;
      return false;
   }

Une idée comment je peux désactiver le bouton Retour dans la barre de navigation?

hvaughan3

Dans l'ensemble, Android et iOS ne disposent pas d'API normales pour empêcher l'exécution d'un bouton de retour de la barre de navigation pour une très bonne raison, l'utilisateur s'attend à pouvoir revenir en arrière et vous ne devez pas les empêcher de le faire.

Vous devriez plutôt modifier votre conception en ne donnant à l'utilisateur que les options que vous souhaitez qu'il puisse créer ou masquer entièrement la barre de navigation et créer votre propre barre avec vos propres boutons.

Le guide d'Adam offre une vue d'ensemble du sujet que j'aurais aimé trouver face à ce problème.

Il suggère les mêmes choses que je viens de faire, mais fournit également des moyens TRÈS piratés pour éviter de revenir en arrière si vous refusez de modifier votre conception (le code ci-dessous est essentiellement inchangé par rapport à l'article lié ci-dessus):

Sur Android, vous pouvez essayer de trouver le bouton de retour et utiliser la ContentPageméthode ViewModel pour savoir si le retour en arrière doit être autorisé ou non. Vous écraseriez OnOptionsItemSelecteddans MainActivity:

public override bool OnOptionsItemSelected(IMenuItem item) {
    var app = Application.Current;

    if (item.ItemId == 16908332) { // This makes me feel dirty.
        var navPage = ((app.MainPage.Navigation.ModalStack[0] as MasterDetailPage).Detail as NavigationPage); // Notice this code assumes it is looking for a MasterDetailPage being shown as a modal

        if (app != null && navPage.Navigation.NavigationStack.Count > 0) {
            int index = navPage.Navigation.NavigationStack.Count - 1;

            var currentPage = navPage.Navigation.NavigationStack[index];

            var vm = currentPage.BindingContext as ViewModel; //You would want to cast this to a base ViewModel or a specific one so that OnBackButtonPressed() can be called

            if (vm != null) {
                var answer = vm.OnBackButtonPressed();
                if (answer) {
                    return true;
                }
            }
        }
    }

    return base.OnOptionsItemSelected(item);
}

Sur iOS, vous avez besoin d'un moteur de rendu personnalisé pour changer le vrai bouton de retour pour le vôtre:

[assembly: ExportRenderer(typeof(Page), typeof(CustomPageRenderer))]
namespace Mobile.iOS.CustomRenderer {
    public class CustomPageRenderer : PageRenderer {

        public override void ViewWillAppear(bool animated) {
            base.ViewWillAppear(animated);

            var page = Element as CorePage;

            if (page != null) {
                if ((page).OverrideBackButton) {
                    var root = this.NavigationController.TopViewController;
                    // NOTE: this doesn't look exactly right, you need to create an image to replicate the back arrow properly
                    root.NavigationItem.SetLeftBarButtonItem(new UIBarButtonItem("< Back", UIBarButtonItemStyle.Plain, (sender, args) => {
                        var navPage = page.Parent as NavigationPage;
                        var vm = page.BindingContext as ViewModel;

                        if (vm != null) {
                            var answer = vm.OnBackButtonPressed();

                            if (!answer)
                                navPage.PopAsync();
                        } else {
                            navPage.PopAsync();
                        }
                    }), true);
                }
            }    
        }
    }
}

Sur Windows Phone ... il suffit de remplacer OnBackButtonPressed... travailler avec WP est en fait facile pour une fois.

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Désactiver le bouton retour dans la barre de navigation

Afficher le bouton «Retour au menu» dans la barre de navigation iOS avec Xamarin.Forms

Comment masquer le bouton de retour dans les formulaires Xamarin de la barre de navigation

Comment obtenir le bouton de retour dans la barre d'action avec la nouvelle navigation Jetpack

Comment masquer globalement le titre du bouton de retour de la barre de navigation dans xamarin.ios

Xamarin Forms - Afficher le bouton Annuler dans les éléments de la barre d'outils au lieu de Retour (iOS)

Afficher le bouton de retour dans la barre de navigation

Comment masquer le bouton de la barre d'outils par défaut (trois points) dans Xamarin.Forms UWP

Comment changer l'icône de retour de la barre d'outils dans Xamarin Forms Android

Ionic 3 - Ne changez pas le bouton d'accueil en bouton de retour dans la barre de navigation

Désactiver le bouton de retour dans la navigation de réaction

comment remplacer le bouton de retour de la barre d'action dans Android?

Comment ajouter le bouton droit dans la barre de navigation?

Comment ajuster le titre de la barre de navigation et modifier le bouton de retour

comment définir l'image sur le bouton de retour par défaut de la barre de navigation

Changer le bouton de retour en flèche vers le bas dans la barre de navigation

Masquer le bouton de retour dans la barre de navigation avec hidesBackButton dans Swift

Détecter si le bouton de retour par défaut dans la barre de navigation est enfoncé

Comment changer la couleur du bouton de retour dans la barre de navigation?

Comment ajouter une fonctionnalité de flèche de bouton de retour dans la barre de navigation

Comment supprimer tout le titre du bouton de retour de la barre de navigation

Supprimer le texte du bouton de retour de la barre de navigation dans SwiftUI

Comment désactiver le bouton de retour enfoncé dans la classe de fragment Android

Comment changer le titre du bouton "retour" dans une barre de navigation

Ajouter le bouton de retour dans la barre d'applications de la barre d'onglets

Le bouton de retour créé par programme n'apparaît pas dans la barre de navigation?

comment créer un bouton de retour dans la barre de navigation

Suppression de la flèche de retour dans la barre de navigation en conservant le titre du bouton de retour

SwiftUI Comment masquer la barre de navigation tout en maintenant le bouton Retour

TOP liste

  1. 1

    Microsoft.WebApplication.targets

  2. 2

    Exporter la table de l'arborescence vers CSV avec mise en forme

  3. 3

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  4. 4

    Comment analyser un hachage Ruby plat en un hachage imbriqué?

  5. 5

    Passer la taille d'un tableau 2D à une fonction ?

  6. 6

    Comment créer une nouvelle application dans Dropbox avec des autorisations complètes

  7. 7

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  8. 8

    Laravel SQLSTATE [HY000] [1049] Base de données inconnue 'previous_db_name'

  9. 9

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  10. 10

    php ajouter et fusionner des données de deux tables

  11. 11

    Créer un système Buzzer à l'aide de python

  12. 12

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  13. 13

    Comment changer la couleur de la police dans R?

  14. 14

    Déplacement des moindres carrés d'ajustement pour les déplacements de points ayant des problèmes

  15. 15

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  16. 16

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  17. 17

    comment afficher un bouton au-dessus d'un autre élément ?

  18. 18

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  19. 19

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  20. 20

    optimiser les opérations du serveur avec elasticsearch: traitement des filigranes de disque bas

  21. 21

    Comment analyser un fichier avec un tableau d'objets JSON en utilisant Node.js?

chaudétiquette

Archive