2016-03-30 22 views
0

Ich folgte diesem Link http://www.wintellect.com/devcenter/jprosise/handling-the-back-button-in-windows-10-uwp-apps und "erfolgreich" meinen Knopf arbeiten. Ich meine, ich kann meinen Backbutton arbeiten zwischen Seiten. Wenn ich jedoch zu einem Steuerelement innerhalb dieser Seite navigiere und den gesamten Bildschirm betrachte, würde es mir nicht erlauben, auf die Seite zurückzukehren. Ich werde in dieser Kontrolle stecken bleiben. Ich frage mich, wie ich dieses Problem lösen kann. Zur Zeit kann ich zwei mögliche Wege finden (0) OnBackRequested() im Code hinter oder viewmodel des Controls überschreiben? (1) Überschreiben Sie OnHardwareButtonsBackPressed() im Code hinter oder viewmodel? Des Steuerelements. Ich weiß nicht, ob dies der richtige Weg ist, oder es gibt einen besseren Weg, es zu tun. Ein weiterer Grund für das Überschreiben ist, dass ich einige Änderungen am Seitennavigationsverhalten vornehmen muss.Wie backbutton Arbeit für ein Steuerelement, nicht nur Seite in UWP arbeiten?

Antwort

0

Wie Sie bereits erraten haben, müssen Sie das Steuerelement einfach nur ausblenden, wenn die Zurück-Taste gedrückt oder auf andere Weise zurückgefordert wird. Ich würde für das Ereignis BackRequested (nicht das Ereignis HardwareButtons.BackPressed) in der Code-Behind der Seite hören, und in der Behandlungsmethode können Sie überprüfen, ob das Steuerelement derzeit angezeigt wird. Der Grund, warum ich das BackRequested Ereignis empfehle, ist, weil es universell ist, während HardwareButtons.BackPressed nur auf einem Telefon funktioniert. Wenn das Steuerelement sichtbar ist, blenden Sie es aus und setzen Sie die Eigenschaft Handled der Ereignisargumente auf true. Wenn das Steuerelement bereits ausgeblendet ist, sollten Sie keine besonderen Maßnahmen ergreifen, um das Ereignis zu behandeln (denn in diesem Fall möchten Sie, dass das Navigationssystem das Ereignis behandelt, indem es zur vorherigen Seite navigiert, falls vorhanden). Es gibt viele Aspekte der Navigation in Windows 10 - bitte sehen Sie diese Seiten unter Navigation und the SystemNavigationManager.

+0

Ich habe ein paar Probleme mit SystemNavigationManager gefunden. Sein Geltungsbereich ist global, was bedeutet, dass, egal in welchem ​​Steuerelement, nach Drücken der Zurück-Taste, jeder BackPressed ausgelöst wird. Ich habe versucht, das Steuerelement zu verstecken, für einige wird es funktionieren, einige funktionieren einfach nicht. Und für diejenigen, die arbeiten, ist es etwas schwierig, sie wieder sichtbar zu machen. – litaoshen

+0

Sie könnten versuchen, den BackRequested-Ereignishandler im CodeBehind- oder ViewModel einzurichten, anstatt in App.xaml.cs wie der von Ihnen referenzierte Artikel. Auf diese Weise können Sie die Zurück-Schaltfläche pro Seite statt global problemlos verarbeiten. Als Randnotiz würde ich empfehlen, [Template 10] (https://github.com/Windows-XAML/Template10) auszuprobieren, das ein robustes Navigationsmodell mit einem benutzerdefinierten BackRequested-Ereignis (BootStrapper.BackRequested) hat. Auf diese Weise können Sie zu vorherigen Seiten navigieren oder einen Dialog ohne große Schwierigkeiten schließen. –