Windows 10 UAP后退button

我将如何处理Windows Mobile 10的后退button和Windows 10 Tablet模式的后退button? 我一直在寻找,但找不到任何例子。

Solutions Collecting From Web of "Windows 10 UAP后退button"

本主题是“通用Windows平台应用程序指南”中使用的示例之一。 我强烈建议阅读,开始使用通用应用程序。

对于页眉上的按钮,使用Windows.UI.Core.SystemNavigationManager,并设置AppViewBackButtonVisibility属性来显示或隐藏按钮,并处理BackRequested事件来执行导航。

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

您可以像在Windows Phone 8.1中一样连接硬件返回按钮,但是您应该检查PhoneContract(或个人类和方法)以确保它在那里:

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

将下面的代码添加到您的App.xaml.cs中,它将处理桌面,平板电脑和移动设备上的导航(我在移动模拟器上进行了测试),以获得更好的突出显示的差异和解释( 处理由JEFF提供的 Windows 10 UWP应用程序中的后退按钮 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(); } } }