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