2015-06-02 11 views
20

Wie würde ich die Zurück-Taste für Windows Mobile 10 und die Zurück-Taste für Windows 10 Tablet-Modus behandeln? Ich habe überall gesucht, kann aber keine Beispiele dafür finden.Windows 10 UAP Zurück-Taste

Antwort

28

Dieses Thema ist eines der in der Guide to Universal Windows Platform apps verwendeten Beispiele. Ich empfehle dringend, dies zu lesen, wenn Sie mit Universal Apps beginnen.

Verwenden Sie für die Schaltfläche in der Seitenkopfzeile Windows.UI.Core.SystemNavigationManager, und legen Sie die AppViewBackButtonVisibility-Eigenschaft fest, um die Schaltfläche ein- oder auszublenden und das BackRequested-Ereignis zur Ausführung der Navigation zu verarbeiten.

Windows.UI.Core.SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible; 
Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += (s,a) => 
{ 
    Debug.WriteLine("BackRequested"); 
    if (Frame.CanGoBack) 
    { 
     Frame.GoBack(); 
     a.Handled = true; 
    } 
} 

Sie Draht, der die Hardware zurück, um die gleiche, wie Sie in Windows Phone tun 8.1, aber Sie sollten für die PhoneContract überprüfen (oder die individuelle Klasse und Methode) um sicherzustellen, dass es da ist:

if (ApiInformation.IsApiContractPresent ("Windows.Phone.PhoneContract", 1, 0)) { 
    Windows.Phone.UI.Input.HardwareButtons.BackPressed += (s, a) => 
    { 
     Debug.WriteLine("BackPressed"); 
     if (Frame.CanGoBack) 
     { 
      Frame.GoBack(); 
      a.Handled = true; 
     } 
    }; 
} 
+0

Wo soll AppViewBackButtonVisibility platziert werden? MainPage contstructor tut nichts für mich noch die OnLaunched in App.xaml.cs – robertk

+0

Es geht automatisch auf die Titelleiste :) – shady

+1

Gibt es eine Möglichkeit, die Hintergrundfarbe der Schaltfläche zurück anpassen? –

6

Fügen sie den folgenden Code in Ihre App.xaml.cs und es wird die Navigation auf dem Desktop, Tablet und Mobile (getestet habe ich es auf dem mobilen Emulator) für besser hervorgehoben Unterschiede und Erklärung (Handling The Back Button In Windows 10 UWP Apps von JEFF PROSISE)

Griff
sealed partial class App : Application 
{ 

    public App() 
    { 
     this.InitializeComponent(); 
     this.Suspending += OnSuspending; 
    } 

    protected override void OnLaunched(LaunchActivatedEventArgs e) 
    { 
     Frame rootFrame = Window.Current.Content as Frame; 

     // Do not repeat app initialization when the Window already has content, 
     // just ensure that the window is active 
     if (rootFrame == null) 
     { 
      // Create a Frame to act as the navigation context and navigate to the first page 
      rootFrame = new Frame(); 

      rootFrame.NavigationFailed += OnNavigationFailed; 
      rootFrame.Navigated += OnNavigated; 

      if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) 
      { 
       // TODO: Load state from previously suspended application 
      } 

      // Place the frame in the current Window 
      Window.Current.Content = rootFrame; 

      // Register a handler for BackRequested events and set the 
      // visibility of the Back button 
      SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested; 

      SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = 
       rootFrame.CanGoBack ? 
       AppViewBackButtonVisibility.Visible : 
       AppViewBackButtonVisibility.Collapsed; 
     } 

     if (rootFrame.Content == null) 
     { 
      // When the navigation stack isn't restored navigate to the first page, 
      // configuring the new page by passing required information as a navigation 
      // parameter 
      rootFrame.Navigate(typeof(MainPage), e.Arguments); 
     } 

     // Ensure the current window is active 
     Window.Current.Activate(); 
    } 

    void OnNavigationFailed(object sender, NavigationFailedEventArgs e) 
    { 
     throw new Exception("Failed to load Page " + e.SourcePageType.FullName); 
    } 

    private void OnNavigated(object sender, NavigationEventArgs e) 
    { 
     // Each time a navigation event occurs, update the Back button's visibility 
     SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = 
      ((Frame)sender).CanGoBack ? 
      AppViewBackButtonVisibility.Visible : 
      AppViewBackButtonVisibility.Collapsed; 
    } 

    private void OnSuspending(object sender, SuspendingEventArgs e) 
    { 
     var deferral = e.SuspendingOperation.GetDeferral(); 
     // TODO: Save application state and stop any background activity 
     deferral.Complete(); 
    } 

    private void OnBackRequested(object sender, BackRequestedEventArgs e) 
    { 
     Frame rootFrame = Window.Current.Content as Frame; 

     if (rootFrame.CanGoBack) 
     { 
      e.Handled = true; 
      rootFrame.GoBack(); 
     } 
    } 
} 
+0

Ich versuche dies auf meinem Lumia 950, um die Tasten entlang der Taste, zurück, nach Hause und Suche zu verstecken. Es tut nichts und sie sind immer noch da, irgendwelche Ideen warum? – Nick

+0

Die Antwort ist in Bezug auf die spezielle Schaltfläche "Zurück", die oben links angezeigt wird und die Hardware-Schaltfläche behandelt, die standardmäßig die App beendet. es hat nichts mit Heim- und Suchknöpfen zu tun. –

+0

Aah okay danke, mein Schlechter. Ich habe am Ende die Informationen gefunden, die ich haben wollte. – Nick