喜大普奔的win10 uap开发预览版终于出了,这次更新跟8.1的变化不是很大,但是将原本win8.1和wp8.1uap的分项目的形式,改为了整合成一个项目,经过一次编译打包成一个appx包,实现了无缝跨平台。
每一个平台特有的API,就变为了扩展API,以下几种
下面,就以wp特有的后退键为例,看一下不同平台扩展api的使用。
如果你新建一个win10UAP的项目,跑在wp上运行,你会发现,后退键竟然他喵的是后台!这不是抢Home键的饭碗么!
自带的几种风格的页面,竟然是用的左上角虚拟后退键,这种倒行逆施的行为微软你真是够了!
一定要把后退功能找回来!!
于是就用到了扩展api:
1.Add References
2.选择 Universal App Platform – Extensions
3.勾选Windows Mobile Extension SDK
4.愉快的使用 Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
这句代码放到win10桌面里运行是会crash的,因为桌面版里没有此API,所以需要用
Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons")
运行时判断是否有该API的支持。
于是,最后的代码可能是这样:
1
2
3
4
5
|
if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent( "Windows.Phone.UI.Input.HardwareButtons" )) { //http://www.liubaicai.net/archives/444
Windows.Phone.UI.Input.HardwareButtons.BackPressed -= HardwareButtons_BackPressed; Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed; } |
1
2
3
4
5
6
7
8
9
|
private void HardwareButtons_BackPressed( object sender, Windows.Phone.UI.Input.BackPressedEventArgs e) { //http://www.liubaicai.net/archives/444
e.Handled = true ; Frame rootFrame = Window.Current.Content as Frame; if (rootFrame.CanGoBack) rootFrame.GoBack(); else Application.Current.Exit(); } |
于是就愉快的实现了后退键后退的功能。