如何在Windows 10通用应用程序开发中使用硬件后退button限制导航到某些页面?

我跟着http://www.wintellect.com/devcenter/jprosise/handling-the-back-button-in-windows-10-uwp-apps

我的导航看起来像:Login-> A-> B-> C。 当我按C从后面button它应该导航像这样C-> B-> A并且不应该导航到login页面formsA.

SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible; SystemNavigationManager.GetForCurrentView().BackRequested += Util.Navigation_BackRequested; public static void Navigation_BackRequested(object sender, BackRequestedEventArgs e) { Frame rootFrame = Window.Current.Content as Frame; if (rootFrame.Equals(typeof(MeetingsList))) { Util.debugLog("RESTRICT BACK "); } else { if (rootFrame.CanGoBack) { e.Handled = true; rootFrame.GoBack(); } } SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed; } 

您可以在从Login到rootFrame.RemoveBackEntry()导航时调用rootFrame.RemoveBackEntry() 。这应该RemoveBackEntry()删除导航堆栈中的最后一个条目。 所以你可以在OnNavigatedTo()页面A上做这个。 但是,你应该检查,如果你来自登录或页面B!

默认情况下,UWP开发没有启用“后退”按钮。 首先U需要跟进链接,介绍如何启用后退按钮UWP应用程序开发

http://www.wintellect.com/devcenter/jprosise/handling-the-back-button-in-windows-10-uwp-apps

那么你可以使用下面的代码提示来限制导航

  private void App_BackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e) { Frame rootFrame = Window.Current.Content as Frame; bool status = false; if(rootFrame == null) { return; } if (rootFrame.SourcePageType.Name.Equals("POSummary") || rootFrame.SourcePageType.Name.Equals("AutoBinAllocation")) { e.Handled = true; status = true; } // Navigate back if possible, and if the event has not // already been handled . if (rootFrame.CanGoBack && e.Handled == false && status == false) { e.Handled = true; rootFrame.GoBack(); } }