標題欄”后退“按鈕,系統級導航
應用必須啟用所有硬件和軟件系統后退按鈕的后退導航。執行此操作的方法是注冊 BackRequested 事件的偵聽器並定義相應處理程序。
在此處我們為 App.xaml 代碼隱藏文件中的 BackRequested 事件注冊全局偵聽器。如果你想要從后退導航排除特定頁面,或想要在顯示頁面前執行頁面級別代碼,可以在每個頁面中注冊此事件。
Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += App_BackRequested;
以下是在應用的根框架上調用 GoBack 的相應 BackRequested 事件處理程序。
此處理程序在全局后退事件上調用。 如果應用內后退堆棧為空,系統可能導航至 應用堆棧中的上一個應用或“開始”屏幕。 桌面模式沒有應用后退堆棧,並且即使在應用內后退堆棧耗盡時,用戶也將停留在該應用中。
private void App_BackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e) { Frame rootFrame = Window.Current.Content as Frame; if (rootFrame == null) return; // Navigate back if possible, and if the event has not // already been handled . if (rootFrame.CanGoBack && e.Handled == false) { e.Handled = true; rootFrame.GoBack(); } }
啟用標題欄后退按鈕
支持桌面模式(通常是 PC 和筆記本電腦,但也有一些平板電腦)並啟用了設置(“設置”>“系統”>“平板電腦模式”)的設備不提供帶有系統后退按鈕的全局導航欄。
在桌面模式下,每個應用都在帶有標題欄的窗口中運行。你可以為在此標題欄中顯示的應用提供備用后退按鈕。
標題欄后退按鈕僅在桌面模式下的設備上運行的應用中可用,並且僅支持應用內導航歷史記錄—它不支持應用間的導航歷史記錄。
要點 默認情況下不顯示標題欄后退按鈕。你必須選擇顯示該按鈕。
在隱藏代碼文件中,為你想要啟用標題欄后退按鈕的每個頁面重寫 OnNavigatedTo 事件並將 AppViewBackButtonVisibility 設置為 Visible。
例如,如果幀的 CanGoBack 屬性值為 true,我們將在后退堆棧中列出每個頁面並啟用后退按鈕。
protected override void OnNavigatedTo(NavigationEventArgs e) { Frame rootFrame = Window.Current.Content as Frame; string myPages = ""; foreach (PageStackEntry page in rootFrame.BackStack) { myPages += page.SourcePageType.ToString() + "\n"; } stackCount.Text = myPages; if (rootFrame.CanGoBack) { // Show UI in title bar if opted-in and in-app backstack is not empty. SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible; } else { // Remove the UI from the title bar if in-app back stack is empty. SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed; } }
摘自:MSDN