后退按钮导航在Windows 10 Mobile

时间:2016-03-08 23:13:37

标签: c# win-universal-app windows-10-mobile

我有一个应用程序,它在Windows 10上按预期工作。但在Windows 10 Mobile上,当用户按下按钮时,应用程序关闭。在我的后台请求事件处理程序中,我甚至注释掉了GoBack()方法,但app仍然关闭。

private void MobileNavigationService_BackRequested(object sender, BackRequestedEventArgs e)
    {
        e.Handled = true;

        var navigationService = UnityConfiguration.Resolve<IMobileNavigationService>();

        if (navigationService.CanGoBack())
        {
            //navigationService.GoBack();
        }
    }

我有一种感觉,即使我设置了 e.Handled = true ,它也会忽略它并且就像没有处理程序一样。

更新

作为附加信息

App只有一个页面,Shell。它有常见的东西,如菜单和标题栏。它也有框架。在框架中,我打开所有其他页面。因此,对我的应用程序来说,意味着回到那个框架,而不是整个应用程序。我想覆盖默认行为。

1 个答案:

答案 0 :(得分:-1)

  • 为BackRequested设置事件处理程序并在页面堆栈中导航回来。
  • 根据应用程序的内部页面堆栈启用和禁用标题栏后退按钮。

你可以在GitHub中从微软获得这个DEMO

Back Button Sample

protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        bool optedIn = false;

        if ((bool)e.Parameter)
        {
            optedIn = true;

        }

        Frame rootFrame = Window.Current.Content as Frame;

        if (rootFrame.CanGoBack && optedIn)
        {
            // If we have pages in our in-app backstack and have opted in to showing back, do so
            SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;
        }
        else
        {
            // Remove the UI from the title bar if there are no pages in our in-app back stack
            SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;
        }
    }