Windows runtime 什么是“相当于”;OnBackKeyPress";

Windows runtime 什么是“相当于”;OnBackKeyPress";,windows-runtime,back,windows-phone-8.1,win-universal-app,Windows Runtime,Back,Windows Phone 8.1,Win Universal App,在Windows Phone 8.0中,我使用此按钮处理后退按钮: protected override void OnBackKeyPress(CancelEventArgs e) { base.OnBackKeyPress(e); } “页面”控件上不存在此事件。我如何处理WP 8.1中单击后退按钮的问题?请查看 如果您向项目中添加基本页面,那么VS将向您的项目中添加NavigationHelper类,该类有助于通过您的应用进行导航,您还可以在源代码中看到它正在订阅

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

protected override void OnBackKeyPress(CancelEventArgs e)
{
    base.OnBackKeyPress(e);        
}
“页面”控件上不存在此事件。我如何处理WP 8.1中单击后退按钮的问题?

请查看

如果您向项目中添加基本页面,那么VS将向您的项目中添加NavigationHelper类,该类有助于通过您的应用进行导航,您还可以在源代码中看到它正在订阅
Windows.Phone.UI.Input.HardwareButtons.BackPressed


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

您可以使用上面的注释。但这件事总是被抛在每一页上。所以你们可以使用下面的例子,这只会在活动页面中抛出


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
}

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

我正在将我的wp8项目迁移到wp8.1 universal,为了避免太多地涉及我的代码,我会:

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

 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方法的覆盖

文档中声明“此API仅在本机应用程序中受支持”是否重要感谢此提示。@Roman我添加了一个指向您可能感兴趣的其他答案的链接-帮助处理BackButton,阻止导航和其他功能。@LukkhaCoder您将无法在Windows Phone 8.1 Silverlight中使用它。@Nanoc没错,MSDN也这么说。问题是关于WP8.1运行时的。这在一个通用应用程序中对我有效。然而,我需要将其嵌套在“如果WINDOWS手机”应用程序语句中。OnNavigatedFrom上的HardwareButtons\u BackPressed事件不应该被删除吗?为什么不应该?如果您不在新页面上删除并添加新事件,则当您按“上一步”按钮时会触发这两个事件。