【发布时间】:2014-11-26 20:12:00
【问题描述】:
我尝试在 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。
有什么想法吗?
【问题讨论】:
-
如果您只想返回按下的按钮(正常行为),则不必添加任何处理程序。它会做你所期望的。如果你想告诉用户它即将退出应用程序或者你的应用程序不允许返回,我想添加一个处理程序,除非采取了一些行动。
-
你在哪里订阅
HardwareButtons_BackPressed?请记住,此事件是应用程序范围内的,因此在不取消订阅的情况下订阅每个页面可能是个坏主意。还要在rootFrame.GoBack()之前设置e.Handeled = true。检查您是否在代码旁边使用 NavigationHelper 或App()构造函数中已有订阅。你也可以看看this question。我还为您的问题添加了合适的标签,并从标题中删除了标签(在大多数情况下它们不应该存在)。欢迎来到 SO。 -
我在开始页面订阅了 HardwareButtons_BackPressed,然后我只写了一个方法。我设置 e.Handled = true;在 GoBack 之前。还是不行。
标签: c# windows-phone windows-phone-8.1 back-button