我的Windows Phone 8.1通用应用程序中有2个页面。
我使用带有单击事件代码的按钮从 Page1 .xaml 导航到 Page2 .xaml:
this.Frame.Navigate(typeof(Page2));
当我在Page2上并且使用硬件后退按钮时,该应用程序将无任何异常关闭。它只是返回到开始屏幕。
我已经在 Page 2 上尝试了以下方法:
public Page2() { this.InitializeComponent(); Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed; } void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e) { Frame.GoBack(); }
据我所知,我没有清除后栈。
这是怎么回事,我该如何解决?
亲切的问候,尼尔斯
这是Windows Phone 8.1的新增功能。
如果使用VS2013模板创建新的Hub Universal App,则会在Common文件夹中看到一个名为NavigationHelper的类。
此NavigationHelper提示您如何正确响应后退按钮。因此,如果您不想使用NavigationHelper,请按照以下方法恢复原来的行为:
public BlankPage1() { this.InitializeComponent(); HardwareButtons.BackPressed += HardwareButtons_BackPressed; } void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e) { if (Frame.CanGoBack) { e.Handled = true; Frame.GoBack(); } }
您也可以在应用程序级别上执行此操作,以避免在每个页面上都执行此操作:
public App() { this.InitializeComponent(); this.Suspending += this.OnSuspending; #if WINDOWS_PHONE_APP HardwareButtons.BackPressed += HardwareButtons_BackPressed; #endif } #if WINDOWS_PHONE_APP void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e) { Frame rootFrame = Window.Current.Content as Frame; if (rootFrame != null && rootFrame.CanGoBack) { e.Handled = true; rootFrame.GoBack(); } } #endif