win 10 开发:后退键的重写

win 10 开发中,做移动端时,发现原来wp8.1的时候可以重写后退键的,现在居然不行了。自己百度了下,原来是微软考虑到多屏的统一,以及在平板,pc等设备上的体验。默认没有这一api.这。。。。我们的双击退出呢?用户们需要啊!怎么办呢?别急,微软还是想到了这一点的。微软同学把它作为了扩展api.

找到该扩展api的具体方法如下:

1.添加引用

2.选择 Universal windows – 扩展

3.找到  Windows Mobile Extension for the  UWP

现在就可以用  Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;重写返回键了。

我们重写下返回键。用按下返回键弹窗测试重写是否成功:

private async void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
e.Handled = true;
await new MessageDialog(“hello”).ShowAsync();
}

这样看貌似成功了!!是吗?

但是要记住还有windows桌面版啊!因为桌面版里没有此API,所以直接使用会出问题!!!

请看下图,在 pc 上运行时:

所以,我们不能直接使用原来的方法了,需要用

Windows.Foundation.Metadata.ApiInformation.IsTypePresent(“Windows.Phone.UI.Input.HardwareButtons”)

运行时判断是否有该API的支持。

最终。

举例说明 按下返回键弹窗提示 的方法如下:

if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent(“Windows.Phone.UI.Input.HardwareButtons”))
        {
            Windows.Phone.UI.Input.HardwareButtons.BackPressed -= HardwareButtons_BackPressed;
            Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
        }
private async void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
e.Handled = true;
await new MessageDialog(“hello”).ShowAsync();
}

这样,我们才算完成了后退键的重写。win10 开发刚刚开始,所以大家有什么好的建议和问题也可以共同交流,欢迎加群 193148992 共同学习交流。