7

在 Windows Phone 8.0 中,我使用它来处理后退按钮:

protected override void OnBackKeyPress(CancelEventArgs e)
{
    base.OnBackKeyPress(e);        
}

此事件在“页面”控件上不存在。如何在 WP 8.1 中处理单击后退按钮?

4

3 回答 3

3

看看Windows.Phone.UI.Input.HardwareButtons

如果你在你的项目中添加一个基本页面,那么 VS 会在你的项目中添加一个 NavigationHelper 类,这有助于通过你的应用程序导航,你还可以在它订阅的源代码中看到Windows.Phone.UI.Input.HardwareButtons.BackPressed


如果您想扩展处理后退按钮(管理 Eventhandler 队列等),您可以看看这个答案- 那里的方法将有助于防止向后导航(如果您不需要它)并添加更多行为.

于 2014-04-16T15:01:50.650 回答
2

您可以像上面的评论一样使用Windows.Phone.UI.Input.HardwareButtons 。但是这个事件总是在每一页中抛出。所以你可以像下面的例子一样使用,这只会被扔到活动页面中。


protected override void OnNavigatedTo(NavigationEventArgs e)
{
    Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
}

void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
    e.Handled = true;
    Windows.Phone.UI.Input.HardwareButtons.BackPressed -= HardwareButtons_BackPressed;
    // Navigate to a page
}

我用这种方式解决了我的问题。

于 2014-04-22T20:37:21.003 回答
1

我正在将我的 wp8 项目迁移到 wp8.1 通用版,所以不要过多地触及我的代码:

在我的页面基类中,在构造函数中,我添加了:

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

进而:

private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
    {
        var args = new CancelEventArgs();
        OnBackKeyPress(args);
        if (args.Cancel)
        {
            e.Handled = true;
        }
    }
protected virtual void OnBackKeyPress(CancelEventArgs e)
    {
    }

所以我可以将我当前的覆盖用于 OnBackKeyPress 方法

于 2014-09-01T18:03:39.307 回答