在我的UWP应用程序中,我有2帧 . 在默认框架中,我有一个 SplitView
,在 SplitView.Content
中,我有一个名为 Mainframe
的自定义框架 . 我的应用程序有大约5页,所有这些都在 MainFrame
中加载 . MainPage
是默认框架中唯一的页面 . 这是我用于导航的代码:
public MainPage()
{
this.InitializeComponent();
MainFrame.Navigate(typeof(PageX));
MainFrame.Navigated += MainFrame_Navigated;
SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;
}
private void MainFrame_Navigated(object sender, NavigationEventArgs e)
{
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility =
((Frame)sender).CanGoBack ?
AppViewBackButtonVisibility.Visible :
AppViewBackButtonVisibility.Collapsed;
}
private void OnBackRequested(object sender, BackRequestedEventArgs e)
{
if(MainFrame.CurrentSourcePageType == typeof(PageX))
{
MainFrame.BackStack.Clear();
MainFrame.Navigate(typeof(PageY));
}
else if (MainFrame.CanGoBack)
{
e.Handled = true;
MainFrame.GoBack();
}
}
这在桌面上按预期工作(也就是说,当我在pageX上并单击后退按钮时,我将被带到pageY)但是在手机上它可以按预期工作,除非我从pageX单击后退按钮,如果就是这样,应用程序就退出了 . 但是在调试期间我发现我第一次被带到pageY然后应用程序关闭(它发生得非常快) . 但它没有完全关闭,它被最小化,当我再次打开应用程序时,它将在pageY上 .
1 回答
向前导航时需要设置
e.Handled
.当您导航到PageY时,您说您没有处理后退按钮,这意味着应用程序(框架)将处理该按钮,Windows Mobile上的后退按钮的默认行为是退出应用程序