C# 如何在windows 10通用应用程序开发中使用硬件后退按钮将导航限制到某些页面?

C# 如何在windows 10通用应用程序开发中使用硬件后退按钮将导航限制到某些页面?,c#,windows,xaml,C#,Windows,Xaml,我跟着 我的导航看起来像: 登录->A->B->C。 当我从C按backbutton时 它应该像C->B->A这样导航,而不应该导航到登录页面表单A SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible; SystemNavigationManager.GetForCurrentView().BackRequeste

我跟着

我的导航看起来像: 登录->A->B->C。 当我从C按backbutton时 它应该像C->B->A这样导航,而不应该导航到登录页面表单A

    SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;
    SystemNavigationManager.GetForCurrentView().BackRequested += Util.Navigation_BackRequested;

    public static void Navigation_BackRequested(object sender, BackRequestedEventArgs e)
    {
        Frame rootFrame = Window.Current.Content as Frame;
        if (rootFrame.Equals(typeof(MeetingsList)))
        {
            Util.debugLog("RESTRICT BACK ");
        }
        else 
        {
            if (rootFrame.CanGoBack)
            {
                e.Handled = true;
                rootFrame.GoBack();
            }
        }
        SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;

    }

从登录导航到页面A时,可以调用
rootFrame.RemoveBackEntry()
。这应该
RemoveBackEntry()
删除导航堆栈中的最后一个条目。因此,您可以在
OnNavigatedTo()
的A页上执行此操作。但是你应该检查你是否来自登录或页面B

默认情况下,“后退”按钮不用于UWP开发。首先,你需要跟进下面的链接,该链接描述了如何启用UWP应用程序开发的后退按钮

然后,您可以使用以下代码提示限制导航

    private void App_BackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e)
    {
        Frame rootFrame = Window.Current.Content as Frame;
        bool status = false;
        if(rootFrame == null)
        {
            return;
        }
        if (rootFrame.SourcePageType.Name.Equals("POSummary") || rootFrame.SourcePageType.Name.Equals("AutoBinAllocation"))
        {
            e.Handled = true;
            status = true;

        }
        // Navigate back if possible, and if the event has not 
        // already been handled .
        if (rootFrame.CanGoBack && e.Handled == false && status == false)
        {
            e.Handled = true;
            rootFrame.GoBack();
        }
    }

是否确实已将红色代码添加到app.xaml.cs文件中?