编程语言
首页 > 编程语言> > C#-导航和硬件后退按钮

C#-导航和硬件后退按钮

作者:互联网

我尝试在Windows Phone 8.1应用程序中使用后退按钮.当我启动应用程序时,我在页面A上.然后我转到页面B-它运行良好,但是当我经过时:

A-> B-> C,然后单击硬件后退按钮应用程序转到A

当A-> B-> C-> D然后返回-也转到A

我使用以下代码进行导航:

Frame.Navigate(typeof(StartingView));

并使用此代码实现硬件后退按钮:

HardwareButtons.BackPressed += HardwareButtons_BackPressed;

Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame != null && rootFrame.CanGoBack)
{
    rootFrame.GoBack();
    e.Handled = true;
}

在D页上,我列出了Frame.BackStack,它看起来不错.另外,当我创建按钮时:

Frame.GoBack();

它来自D-> C,但是当我使用硬件时,它转到A.

任何想法?

解决方法:

我通过在构造函数中添加到App.xaml.cs来解决它:

HardwareButtons.BackPressed += HardwareButtons_BackPressed;

接着

private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
    {
        Frame frame = Window.Current.Content as Frame;
        if (frame == null)
        {
            return;
        }

        if (frame.CanGoBack)
        {
            frame.GoBack();
            e.Handled = true;
        }
    }

重要的是:从其他视图中删除了所有此处理程序.

标签:windows-phone-8-1,back-button,windows-phone,c
来源: https://codeday.me/bug/20191028/1956037.html