Comment intercepter le bouton Retour de la barre de navigation Cliqué dans Xamarin Forms?
J'ai un xamarin page de formulaire où l'utilisateur peut mettre à jour certaines données dans un formulaire. J'ai besoin d'intercepter la Barre de Navigation Bouton de Retour Cliqué pour avertir l'utilisateur si certaines données n'ont pas été enregistrées.Comment faire?
Je suis en mesure d'intercepter le matériel de la Barre de Bouton de Retour Cliqué sur Android à l'aide de la Android.MainActivity.OnBackPressed()
mais cet événement est déclenché uniquement sur le matériel de la Barre Arrière Bouton Cliqué, pas sur la Barre de Navigation en Arrière Bouton Cliqué.
J'ai essayé aussi de remplacer Xamarin.Forms.NavigationPageOnBackButtonPressed()
mais ça ne fonctionne pas. Pourquoi?
Quelqu'un a déjà résolu ce problème?
J'ai aussi essayé en remplaçant OnDisappear()
il y a deux problèmes:
- La page a déjà visuellement disparu donc, "Êtes-vous sûr?" dialogue s'affiche sur la page précédente.
- Ne peut pas annuler l'action.
Donc, est-il possible d'intercepter la barre de navigation en arrière appuyez sur le bouton?
source d'informationauteur Amrut
Vous devez vous connecter pour publier un commentaire.
J'ai été en mesure d'afficher une boîte de dialogue de confirmation qui pourrait annuler la navigation en surchargeant les méthodes suivantes dans l'FormsApplicationActivity.
Le navigateur.CurrentPage est un wrapper autour de la INavigation service. Je n'ai pas à annuler la navigation de modal pages donc je ne suis que de la manipulation de la NavigationStack.
Le plus facile, comme @JordanMazurke aussi un peu le mentionne, depuis l'événement pour le bouton retour ne peut pas être traitée actuellement (autres que la physique bouton retour pour Android), c'est soit:
NavigationPage.ShowHasBackButton(this, false)
Modal
au lieu d'unPage
Puis par la suite, vous pouvez ajouter un
ActionbarItem
d'où vous pouvez gérer laEvent
.J'ai parlé personnellement à l'iOS de l'équipe de Xamarin à ce sujet, et ils m'a dit que nous ne devrions pas attendre un appui pour la gestion de l'
Event
pour laBackButtonPressed
dans leNavigationBar
. La raison d'être, que sur iOS, c'est une mauvaise pratique pour les utilisateurs de recevoir un message lorsqueBack
est pressé.C'est difficile par définition, et la seule façon que j'ai eu autour d'elle était de supprimer le bouton de retour, entièrement puis de gérer le recul de navigation à partir d'un bouton "enregistrer".
J'ai fait une brève recherche de la Xamarin.Les formes du forum et le suivant a été proposé:
Le lien pour le post est comme suit:
https://forums.xamarin.com/discussion/21631/is-there-nay-way-of-cancelling-the-back-button-event-from-the-navigationpage
Comme on l'a déjà dit - vous ne pouvez pas faire ce cross-plateforme. Toutefois, vous pouvez le gérer en natif sans doute pas autant d'efforts: https://theconfuzedsourcecode.wordpress.com/2017/03/12/lets-override-navigation-bar-back-button-click-in-xamarin-forms/
L'article couvre iOS et Android. Si vous avez un UWP de projet, vous aurez pour marteau de votre propre solution pour elle.
Edit:
Voici le UWP solution! Il s'est en fait avéré être assez facile – il y a juste un bouton de retour et il est pris en charge par les Formes, donc vous avez juste à remplacer ContentPage de OnBackButtonPressed:
Dans Xamarin.Les formes, les Page classe a un
OnBackButtonPressed()
méthode que vous pouvez exploiter pour toutes les plates-formes