UWA - 后退按钮处理

UWA - back button handling

我已经使用了如下代码和应用栏标题后退按钮或移动设备硬件按钮上的后退请求事件我应该在按钮上单击两次直到事件起作用。

一键生效怎么办?

SystemNavigationManager.GetForCurrentView().BackRequested += (sender, e) =>
        {
            bool handeled = e.Handled;

            if (Frame.CanGoBack && !handeled)
            {
                handeled = true;
                Frame.GoBack();
            }

            e.Handled = handeled;
        };


        if (ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))
        {
            Windows.Phone.UI.Input.HardwareButtons.BackPressed += (sender, e) =>
            {
                bool handeled = e.Handled;

                if (Frame.CanGoBack && !handeled)
                {
                    handeled = true;
                    Frame.GoBack();
                }

                e.Handled = handeled;
            };
        }

我遇到了同样的问题。每次我想向后导航时,我都必须按两次后退按钮。直到我发现,SplitView 才是造成这个问题的原因。在导航之前,我不得不关闭它。

例如,如果您想从第 1 页移动到另一个页面然后返回,请在第 1 页上使用如下内容:

protected override void OnNavigatedFrom(NavigationEventArgs e)
{
    MySplitView.IsPaneOpen = false;
}

我希望它能有所帮助,即使你说在一个空白项目(很明显没有汉堡菜单)上结果是一样的。