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