我有UWP应用程序,它实现了以下代码来连接系统后退按钮。我的理解是,此事件用于捕获Windows Phone上的硬件后退按钮,Windows 10上标题栏中的后退按钮和Windows 10平板电脑模式下任务栏上的后退按钮。
硬件和标题栏后退按钮在我的应用程序中正常工作,但在平板电脑模式下,按任务栏上的后退按钮可将我的应用程序移至后台并导航至“开始”菜单,无论我在应用程序中的哪个位置堆栈中。 BackRequested事件在这种情况下触发,我的应用程序导航回一页。
protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested +=
App_BackRequested;
}
private void App_BackRequested(object sender, BackRequestedEventArgs e)
{
NavService.GoBack();
}
关于为什么平板电脑模式后退按钮会以这种方式运行的任何想法?我在许多Windows 10 PC,Surfaces等中都看到过这种行为。
答案 0 :(得分:2)
Tablet
模式后退按钮的默认行为确实是从应用程序导航出来的。为了防止这种情况,您必须确保当可以在应用中导航时,还要将后退导航标记为已处理。
private void App_BackRequested(object sender, BackRequestedEventArgs e)
{
if ( NavService.CanGoBack() )
{
NavService.GoBack();
e.Handled = true;
}
}
您必须添加CanGoBack()
方法,以检查应用Frame
的{{1}}媒体资源。