Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Windows 10 UAP back button

Tags:

How would I handle the back button for windows mobile 10 and the back button for windows 10 tablet mode? I've been looking everywhere but can't find any examples for it.

like image 295
shady Avatar asked Jun 02 '15 13:06

shady


People also ask

Where is the back button on Windows 10?

Windows 10 has introduced a new feature, where the back button can be displayed in the title bar of the application so that when the user runs the app in the windows tablet, he can use the title bar's back button to navigate back.

Where is the back button on my computer?

In all browsers, the shortcut key combination for the back button is Alt + Left arrow key. Also, the backspace key works in many browser to go back.


2 Answers

This topic is one of the examples used in the Guide to Universal Windows Platform apps . I strongly suggest reading that when getting started with Universal apps.

For the button on the page header use Windows.UI.Core.SystemNavigationManager and set the AppViewBackButtonVisibility property to show or hide the button and handle the BackRequested event to perform the navigation.

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;     } } 

You wire up the hardware back button the same as you do in Windows Phone 8.1, but you should check for the PhoneContract (or the individual class and method) to make sure it is there:

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;         }     }; } 
like image 130
Rob Caplan - MSFT Avatar answered Oct 04 '22 13:10

Rob Caplan - MSFT


Add the following code to your App.xaml.cs and it will handle the navigation on desktop, tablet and mobile (I tested it on the mobile emulator) for better highlighted differences and explanation (Handling The Back Button In Windows 10 UWP Apps by JEFF PROSISE)

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();         }     } } 
like image 36
Shehab Fawzy Avatar answered Oct 04 '22 13:10

Shehab Fawzy