Windows Phone 8.1 BackPressed无法正常工作

Jee*_*123 4 windows-phone-8.1

Windows Phone 8.1全新推出.基本功能是后退按钮点击.这个功能不正常的是这款Windows Phone 8.1.这种行为还是我犯了错误.

下面的代码在主页中使用,但是这个代码在点击后也从所有其他类调用.我只需要在主页上访问以下方法.

请检查以下代码,并向我推荐好的解决方案.

请查看我的代码:

 public HomePage()
 {
  this.InitializeComponent(); 
  Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
 }

    void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
    {

    }
Run Code Online (Sandbox Code Playgroud)

谢谢

Rom*_*asz 10

它运作正常.该BackPressed事件正在应用范围.我想到的两个选择:

  • 编写可以识别当前调用它的Page的 eventhandler - 简单示例如下所示:

    private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
    {
        Frame frame = Window.Current.Content as Frame;
        if (frame == null) return;
    
        if (frame.Content is HomePage)
        {
            e.Handled = true;
            Debug.WriteLine("I'm in HomePage");
        }
        else if (frame.CanGoBack)
        {
            frame.GoBack();
            e.Handled = true;
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 第二个选项 - Windows.Phone.UI.Input.HardwareButtons.BackPressed当您进入页面时订阅并在您离开页面时取消订阅.请注意,通过这种方式存在一些陷阱 - 您必须正确处理OnNavigatedTo,OnNavigatedFrom,Suspending和Resuming(更多关于生命周期).还要注意,订阅应该在其他人之前完成 - 例如NavigationHelper.

一些评论 - 上面的代码应该有效,但它还取决于其他情况:

  • 如果之前有其他订阅的东西BackPressed(在App.xaml.cs中) - 请记住,通常会在订阅时触发事件
  • 检查您是否使用NavigationHelper - 它也订阅了 BackPressed
  • 记住不要多次订阅
  • 记得允许用户离开您的主页