Wie das abfangen Navigationsleiste Zurück-Button Geklickt haben, Xamarin Forms?
Habe ich einen xamarin forms-Seite, wo ein Benutzer kann das update einige Daten in einem Formular. Ich brauche zum abfangen der Navigationsleiste Zurück-Button Geklickt, um den Benutzer zu warnen, wenn einige Daten noch nicht gespeichert wurden.Wie es zu tun?
Ich bin in der Lage, abfangen der hardware-Bar Zurück-Button Geklickt haben, auf Android mit der Android.MainActivity.OnBackPressed()
, aber das Ereignis wird ausgelöst, nur auf hardware-Bar Zurück-Button Geklickt, nicht auf der Navigationsleiste die Schaltfläche Zurück Geklickt.
Habe ich versucht zu überschreiben Xamarin.Forms.NavigationPageOnBackButtonPressed()
aber es funktioniert nicht. Warum?
Alle haben ein bereits gelöst, das Problem?
Ich habe auch versucht durch überschreiben OnDisappear()
gibt es zwei Probleme:
- Die Seite hat bereits visuell verschwunden, so die "Sind Sie sicher?" - dialog erscheint über der vorherigen Seite.
- Nicht Abbrechen, das zurück-Aktion.
So, ist es möglich, das abfangen der Navigationsleiste zurück drücken?
InformationsquelleAutor Amrut | 2015-07-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
War ich in der Lage zu zeigen, ein Bestätigungs-dialog, der könnte Abbrechen der navigation durch überschreiben der folgenden Methoden in der FormsApplicationActivity.
Den navigator.CurrentPage ist ein wrapper um die INavigation service. Ich habe nicht zum Abbrechen der navigation aus modal-Seiten, so ich bin nur die Handhabung der NavigationStack.
InformationsquelleAutor barry
Die einfachste, da @JordanMazurke auch etwas erwähnt, da das Ereignis für die Schaltfläche zurück können nicht behandelt werden, derzeit (anderen als der physische zurück-Taste für Android), ist entweder:
NavigationPage.ShowHasBackButton(this, false)
Modal
statt einerPage
Danach können Sie eine
ActionbarItem
von denen, die Sie behandeln können dieEvent
.Ich persönlich Sprach, um das iOS-team von Xamarin in Bezug auf diese Sache, und Sie im Grunde sagte mir, wir sollten nicht erwarten, dass Unterstützung für den Umgang mit der
Event
für dieBackButtonPressed
imNavigationBar
. Der Grund dafür ist, dass auf iOS, es ist eine schlechte Praxis für die Benutzer erhalten eine Nachricht, wennBack
gedrückt wird.InformationsquelleAutor Demitrian
Dies ist eine von Natur aus schwierige Aufgabe und der einzige Weg, den ich gekommen war, um entfernen Sie die back-Taste komplett zu schließen und dann mit der rückwärts-navigation von einem 'speichern' - button.
Ich habe eine kurze recherche in der Xamarin.Formen forum und die folgenden vorgeschlagen worden:
Den link für den post ist wie folgt:
https://forums.xamarin.com/discussion/21631/is-there-nay-way-of-cancelling-the-back-button-event-from-the-navigationpage
InformationsquelleAutor JordanMazurke
Wie schon gesagt - Sie können das nicht cross-Plattform. Sie können jedoch handle es nativ mit wohl nicht so viel Mühe: https://theconfuzedsourcecode.wordpress.com/2017/03/12/lets-override-navigation-bar-back-button-click-in-xamarin-forms/
Der Artikel geht auf iOS und Android. Wenn Sie eine UWP-Projekt müssen Sie hammer Ihre eigene Lösung für Sie.
Bearbeiten:
Hier ist die UWP Lösung! Es stellte sich tatsächlich heraus, ziemlich einfach, es ist nur eine zurück-Taste und es ist unterstützt durch Formen, so dass Sie nur überschreiben ContentPage ist OnBackButtonPressed:
InformationsquelleAutor AXE
In Xamarin.Formen, die Seite Klasse hat ein
OnBackButtonPressed()
Methode, die Sie in Leitungswasser für alle PlattformenInformationsquelleAutor Chase Florell