设为首页 收藏本站
查看: 1161|回复: 0

把windows phone 7工程升级到windows phone 8

[复制链接]

尚未签到

发表于 2015-5-10 17:27:21 | 显示全部楼层 |阅读模式
  导读:下文主要告诉你怎样把一个wp7的工程迁移到wp8上。目前还没有拿到真机,所有测试均针对模拟器进行
  
  1、开发环境
  windows phone 8(简称wp8)的开发环境需要64位windows 8,并安装wp8 sdk. sdk下载地址http://www.microsoft.com/en-us/download/details.aspx?id=35471。
  也可以直接直接下载iso文件http://go.microsoft.com/fwlink/?LinkID=257234&clcid=0x409。
  安装后桌面上将出现这个图标:
DSC0000.png
  VS Express for Windows Phone, 开发wp8程序就靠他了
  2、wp8简介
  关于wp8新功能介绍的文章很多了,本文只介绍和迁移工作相关的几点。
  
  1)分辨率
  wp7支持的分辨率为480*800
  wp8支持3种分辨率:480*800,768*1280(1.6倍),720*1280(1.5倍并加长80像素,或加长53像素再放大到1.5倍)。
  
  2)控件库。
  wp8中加入了一些新控件,例如之前存在于toolkit中的LongListSelector
  
  3)API变更
  wp8不支持部分wp7中的API了,例如获取用户ID的这个:UserExtendedProperties.GetValue("ANID")
  
  4)ResourceDictionary文件的规则变更
  wp8针对ResourceDictionary文件的一些解析规则比wp7更严格(或者说更弱)。
  例如在wp7中你可以这样写:(文件开头要加上命名空间定义    xmlns:sys="clr-namespace:System;assembly=mscorlib" )
     /Images/pic1.png
   
  在wp8中则不行。可以编译通过,但运行时将出错。因为ImageSource是一个ImageSource型的属性,wp8种并不能自动把string类型
  
  3、体验模拟器
  事实上,wp7的xap包不经任何改动即可在wp8上运行。
  对待3种分辨率,系统将分别这样处理画面:
  480*800:直接使用
  768*1280:等比放大至1.6倍
  720*1280:等比放大至1.5倍,并底部对齐放置(顶部将留下80像素的空隙)。
  对于前两种分辨率,直接运行的效果完全可以接受。但对于720*1280,这个体验就很差了:
DSC0001.png
  4、将工程升级到wp8
  我们的目的是快速将程序在wp8上运行起来。如果你的运气足够好,直接在打开的工程邮件菜单执行“Upgrade to windows phone 8.0”, 这项工作就算做完了。
  这样完成后的工程在720*1280的屏幕上也可以正常运行。在布局中它用到的布局分辨是480*853.
  
  那么怎么才算运气足够好呢?
  没有使用toolkit,没有使用用户id,没有使用资源文件或者资源文件里写法很规范,没有将纵向布局写成绝对高度(想想480*800和480*853),没有用到其他我还没有遇到的问题。
  
  大多数人运气都不会这么好(一般demo的小程序倒是很容易交好运),下面看看遇到以上问题怎么解决。
  
  1)工程中用到了toolkit
  toolkit中的LongListSelector控件在命名空间Microsoft.Phone.Controls里,和wp8系统内置LongListSelector所在命名空间一致。这会导致编译错误。
  解决方法:
  下载tookit源码 http://silverlight.codeplex.com
  删除LongListSelector相关的代码及Themes\generic.xaml中LongListSelector相关的样式
  编译出新的toolkit库,并在你的工程中引用即可 (需要注意LongListSelector的使用细节也有改变)
  2)使用了用户ID
  UserExtendedProperties.GetValue("ANID")将抛出异常。这个问题我还没有找到解决方法,一个勉强可以接受的方法是使用设备ID代替



            string strDeviceID = "";
object objDeviceID = DeviceExtendedProperties.GetValue("DeviceUniqueId");
if (objDeviceID is byte[])
{
byte[] bytesDeviceID = (byte[])objDeviceID;
if (bytesDeviceID != null)
{
foreach (byte b in bytesDeviceID)
{
strDeviceID += b.ToString("X2");
}
}
}

  3)资源词典里的规范问题



  /Images/pic1.png


  改成这个吧



  


  其他的酌情修改
  4)纵向布局问题
  这个在开始写代码是注意一点的话不会出现。遇到的话需要修改页面布局,尽量使用一些相对高度布局,
  例如Grid的布局使用可拉伸的,至少有一个子空间RowDefinition需要定义为“*”



        




  控件的相对位置需要使用类似 VerticalAlignment="Center"/VerticalAlignment="Stretch" 的方式,而不应该直接在Margin里设置。
  
  自此,wp8的项目升级已经完成。剩下的就是体验wp8的新特性了
  
  
  
  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-65612-1-1.html 上篇帖子: MyEclipse Android2.2 开发环境搭建、配置(基于Windows 7操作系统、MyEclipse8.5、Android2.2) 下篇帖子: Windows 7 关机速度
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表