win 10 开发:后退键的重写

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

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

1.添加引用

2.选择Universal windows – 扩展

win 10 开发:后退键的重写_第1张图片



3.找到Windows Mobile Extension for the  UWP


win 10 开发:后退键的重写_第2张图片


现在就可以用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();

}


win 10 开发:后退键的重写_第3张图片

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

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

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

win 10 开发:后退键的重写_第4张图片


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

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 共同学习交流。

你可能感兴趣的:(win 10 开发:后退键的重写)