Windows phone 8.1的BackPressed无法正常工作

4

Windows phone 8.1是新推出的手机操作系统。基本功能是通过返回按钮实现。在这个系统中,如果该功能不能正常工作,是系统问题还是我犯了错误呢。

以下代码用于主页上,但是在点击返回时,此代码也会从所有其他类中调用。我需要只在主页上访问下面的方法。

请查看以下代码并给我提供好的解决方案。

请看我的代码:

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

    void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
    {

    }

Thanks

1个回答

10

它正常工作。 BackPressed 事件 在整个应用程序中都可以使用。我想到了两个选项:

  • 编写事件处理程序,识别当前调用它的页面 - 简单示例如下:

  • 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;
        }
    }
    
  • 第二个选项-当你进入页面时订阅Windows.Phone.UI.Input.HardwareButtons.BackPressed,并在离开页面时取消订阅。需要注意的是,这种方式有一些陷阱-您必须正确处理OnNavigatedTo、OnNavigatedFrom、Suspending和Resuming(更多关于应用程序生命周期)。还要注意,订阅应该在其他内容之前完成-例如NavigationHelper

一些注意事项-上面的代码应该是有效的,但它也取决于其他情况:

  • 如果在App.xaml.cs中另有其他订阅了BackPressed的代码-请注意通常事件会按照它们被订阅的顺序触发
  • 检查是否正在使用NavigationHelper-它也会订阅到BackPressed
  • 记得不要多次订阅
  • 记得允许用户离开您的主页

1
@Jeeva123 您好,欢迎。如果您需要在顶部添加处理程序或使用 BackPressed 进行操作,可以查看此代码片段。也许会有所帮助。 - Romasz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接