標題欄”后退“按鈕,系統級導航
應用必須啟用所有硬件和軟件系統后退按鈕的后退導航。執行此操作的方法是注冊 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
