我尝试在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.
有什么想法吗?
答案 0 :(得分:4)
我通过在构造函数中添加到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;
}
}
非常重要:从其他视图中删除了所有这个处理程序。
答案 1 :(得分:0)
你检查了后台入口吗?
检查后台堆中是否有页面。
string myPage = "";
foreach (PageStackEntry page in Frame.BackStack)
{
myPage = page.SourcePageType.ToString();
}
现在看到字符串" mypage"在每个页面上,确保从每个页面导航后,您将获得您正在导航的页面名称。