我想檢查用戶所在/正在查看的當前頁面是否爲特定頁面 - MainPage。如果用戶在MainPage上,我想確保按下後退按鈕不會導航到上一頁,而是退出應用程序。無論如何檢查用戶目前的頁面是什麼?Windows 10開發:如何檢查當前頁面是否是特定頁面?
或者是否有更好的方法來實現我想實現的目標:確保在MainPage上按下後退按鈕不會導航到上一頁,而是退出應用程序?
我想檢查用戶所在/正在查看的當前頁面是否爲特定頁面 - MainPage。如果用戶在MainPage上,我想確保按下後退按鈕不會導航到上一頁,而是退出應用程序。無論如何檢查用戶目前的頁面是什麼?Windows 10開發:如何檢查當前頁面是否是特定頁面?
或者是否有更好的方法來實現我想實現的目標:確保在MainPage上按下後退按鈕不會導航到上一頁,而是退出應用程序?
看一看導航方法中的NavigationEventArgs.SourcePageType
。它會返回當前頁面的類型。
注意
直到在返回堆棧後退按鈕將導航到該條目(頁)條目。如果後臺是空的按後退將關閉應用程序。在我的應用程序中,當用戶按下主頁按鈕(導航到主頁面)時,除了MainPage外,我總是從後臺堆棧中移除所有內容,這確保了MainPage上的後退按鈕將始終退出。
編輯,我使用回去炫魅廣東(親本解決方案 代碼是這樣,在堆棧中的頁面的導航事件將不會被調用,因爲它們都被刪除。如果他們間沒有「T刪除其導航事件將同時通過返回堆棧,這可能會導致意外的行爲,穿越被稱爲):
private void goHome() {
var bs = Frame.BackStack.Where(b => b.SourcePageType.Name == "MainPage").FirstOrDefault();
if (bs != null)
{
Frame.BackStack.Clear();
Frame.BackStack.Add(bs);
}
this.Frame.GoBack();
}
您可以使用此代碼:
在App.xaml.cs將這個在OnLaunched方法結束時,
// 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;
而且寫這個方法,
private void OnBackRequested(object sender, BackRequestedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame.CanGoBack)
{
e.Handled = true;
rootFrame.GoBack();
}
//you can check for this here rootFrame.BackStack[rootFrame.BackStack.Count-1].SourcePageType.Name
}
你也可以檢查網頁和控制桌面應用程序類似這樣的後退按鈕的知名度,
private void OnNavigated(object sender, NavigationEventArgs e)
{
// Each time a navigation event occurs, update the Back button's visibility
Frame rootFrame = (Frame)sender;
if (rootFrame.BackStack != null && rootFrame.BackStack.Count == 1)
{
// take care in page names
if (rootFrame.BackStack[0].SourcePageType.Name == "MainPage"
|| rootFrame.BackStack[0].SourcePageType.Name == "AnyOtherPage")
{
rootFrame.BackStack.RemoveAt(0);
}
}
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility =
((Frame)sender).CanGoBack ?
AppViewBackButtonVisibility.Visible :
AppViewBackButtonVisibility.Collapsed;
}