Windows Phone编程回顾
前言
已有一年多没有碰WP相关的开发了. 近期经常看博客园的文章, 发现开发WP应用的同学很多, 其中博问频道关于"WPF", "C#", "WP8"相关的问题比较多, 其中很多问题我之前也遇到过, 所以这里写一篇回顾文档, 希望我的经验能给大家带来一些帮助.
我最早的WP手机是Mozart, 这部水货机给我带来了无尽的乐趣, 还有苦恼. Metro的界面设计和交互方式, 非常符合我对现代应用体验的期待, 但应用商店中app的质量数量之少, 质量之差, 让人感觉WP的前景不妙. 我的WP开发学习就是从这时开始, 先后根据自己的需求, 捣鼓出好几款软件并提交到了应用商店. 尽管已经一年多未更新, 大多数应用仍有很多忠实用户, 并收到众多网友给我的中肯建议, 还有应用更新的请求.
写这篇文档, 一方面是回顾下之前的开发经验, 还有就是及时充电, 跟进WP SDK的进度, 为自己/网友继续带来一些新鲜气息.
一些作品
手指画画
"手指画画"是我开发的第一款应用, 前后更新了好几版, 最新版本是5.0, 最后更新时间是2013年7月. 这个也是我自己最满意的作品, 但后来业余时间太少, 中间还有一个6.0版本, 压了一年, 直到现在也没有提交发布. 网友热情让我感动, 作为一款免费软件, 我加上了捐赠链接, 竟然收到了接近100元人民币! 很让人意外, 加这个链接时, 我曾自嘲到, 这个按钮如果有人点真是见鬼了.
蜂鸟浏览器
这个也我花费好几个周末时间. WP7时代的默认浏览器, 尽管操作体验优秀, 但功能少的可怜, 用起来也不够顺手. 我就有想法搞一个浏览器, 也就有了这个作品.
其他
另外, 我练手的软件都提到了市场, 有兴趣可以查阅此链接: http://www.windowsphone.com/zh-CN/store/publishers?publisherId=%25e5%2586%25af%25e5%25a8%2581%25e9%25a3%258e&
经验
下面回到正题. WP开发, 入门门槛其实很低. 主要是C#语言学习, .net framework熟悉, 下载WP SDK和Visual Studio Express, APP设计和开发.
C#语言快速入门
C#语言本身语法优雅, 按照MSDN教程, 几小时入门应该没什么问题. 作为WP的开发语言, 丰富的语言特性也令人兴奋. 所以
经验一
了解.net framework内容
阅读.NET Framework 的路线图 了解.net framework中包含那些内容, 只需要大概浏览一遍,知道那些功能是这个框架提供的, 以便用时过来详细参考. WP的SDK中提供了这篇文章的一个子集.
阅读开发 Windows Phone 8 的应用 熟悉WP应用的生命周期和常见功能实现, 同时下载SDK.
APP设计
不建议仅抱着学习的态度进行WP开发, 一定要给自己设定一个APP目标, 界面/功能/交互, 最好打个草稿, 在纸上画出界面和交互流程图, 然后对照Microsoft 设计原则 看下界面是否符合WP系统的风格, 然后针对性优化.
界面/交互/功能整体需求完成后, 就可以根据上面的链接内开始开发了.
界面布局
WP的界面通过XAML定义, XAML和HTML其实很类似, 但语法其实更简单, 了解Grid, StackPanel, TextBox, TextBlock, Button这几个标签后, 基本界面就可以完成了. 编写界面几点建议.
经验二
- 多用自适应布局, 高度/宽度自适应, 方便做多分辨率设配;
- 多用资源, 比如字体\颜色\背景等, 不要写具体的值, 而是用资源代替, 参考Windows Phone 主题资源 这样你的界面可以自动适应各个主题;
- 将样式整理为资源文件导入, 类似开发网页的css文件, 一次定义, 多次复用, 切勿拷贝;
- 所有文本通过文本资源使用, 方便实现本地化;
- 所有界面数据显示使用绑定, 不要在代码中直接给元素设置显示内容. 比如显示一个文本, 不要用
TextBlock1.Text="xxx";, 而是在xaml中使用<TextBlock Text="{Binding Xxx}"></TextBlock>, 关于绑定, 参考数据绑定概述 (XAML);
设计模式
采用"MVVM"方式开发, 理由自己开发中可以体会到, 只要app复杂度稍微提升, "View Model"和"Model"划分很难避免. 所以一开始选择"MVVM"方式开发可以节省不少重构工作.
"MVVM"尽管有很多框架, 但开始并不建议使用, 自己了解并应用就行了.
经验三
- Model尽量实现"INotifyPropertyChanged"接口, 如方便尽量让类可以序列化, 以便持久存储;
- View Model中定义集合或列表数据, 都使用ObservableCollection类, 如有必要可以继承自此类. 绑定显示时, 修改数据就可以自动更新界面;
- 只要是列表类的数据显示, 都使用ListBox, 通过定义模板和模板选择, 实现界面自定义.
绑定, 绑定!
最后重点强调, 多用数据绑定.
结束
时间不多, 今天先到这里.
Windows Phone编程回顾的更多相关文章
- (转)Windows驱动编程基础教程
版权声明 本书是免费电子书. 作者保留一切权利.但在保证本书完整性(包括版权声明.前言.正文内容.后记.以及作者的信息),并不增删.改变其中任何文字内容的前提下,欢迎任何读者 以任何形式(包括 ...
- 《windows核心编程系列》二十一谈谈基址重定位和模块绑定
每个DLL和可执行文件都有一个首选基地址.它表示该模块被映射到进程地址空间时最佳的内存地址.在构建可执行文件时,默认情况下链接器会将它的首选基地址设为0x400000.对于DLL来说,链接器会将它的首 ...
- 《Windows核心编程》之“完成端口”(对所有IO都是如此,不仅仅是对socket)
<Windows核心编程>第10章开头部分一再强调:“IO Completion Port”是“构建高性能.可升缩的应用程序”的最佳设施之一,它不仅适用于处理设备IO,也适用于其它越来越多 ...
- windows多线程编程星球(一)
以前在学校的时候,多线程这一部分是属于那种充满好奇但是又感觉很难掌握的部分.原因嘛我觉得是这玩意儿和编程语言无关,主要和操作系统的有关,所以这部分内容主要出现在讲原理的操作系统书的某一章,看完原理是懂 ...
- windows核心编程 - 线程同步机制
线程同步机制 常用的线程同步机制有很多种,主要分为用户模式和内核对象两类:其中 用户模式包括:原子操作.关键代码段 内核对象包括:时间内核对象(Event).等待定时器内核对象(WaitableTim ...
- windows核心编程---第九章 同步设备IO与异步设备IO之同步IO
同步设备IO 所谓同步IO是指线程在发起IO请求后会被挂起,IO完成后继续执行. 异步IO是指:线程发起IO请求后并不会挂起而是继续执行.IO完毕后会得到设备的通知.而IO完成端口就是实现这种通知的很 ...
- windows核心编程---第八章 使用内核对象进行线程同步
使用内核对象进行线程同步. 前面我们介绍了用户模式下线程同步的几种方式.在用户模式下进行线程同步的最大好处就是速度非常快.因此当需要使用线程同步时用户模式下的线程同步是首选. 但是用户模式下的线程同步 ...
- storysnail的Windows串口编程笔记
storysnail的Windows串口编程笔记 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据 ...
- windows核心编程---第二章 字符和字符串处理
使用vc编程时项目-->属性-->常规栏下我们可以设置项目字符集合,它可以是ANSI(多字节)字符集,也可以是unicode字符集.一般情况下说Unicode都是指UTF-16.也 ...
随机推荐
- 转型大数据之学前准备,掌握linux(一)
导语:为什么要学习linux?学到什么程度? 大数据技术是运行在集群,且是linux操作系统这样的集群当中的,所以学习大数据之前,你得先掌握了linux的简单操作,没错,我们不是专门的做linux工作 ...
- html+css3 实现各种loading效果
效果见下图 代码: 建议直接去本人github上浏览代码 https://github.com/wuliqiangqiang/loading <!DOCTYPE html> <htm ...
- Angular.js-2入门
1.angular与MVC MVC即Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界 ...
- JavaScript的兼容小坑和调试小技巧
JavaScript作为一种弱类型编程语言,入门简单,只要稍微注意一下IE方面的兼容性,就可以很好的使用它. 本文主要是对IE兼容的小坑和调试的小技巧进行举例分析,并给出解决方法. 1.var str ...
- vue组件间传值详解
1.父传子----传值要点: <1> 在组件注册的时候必须要使用 return 去返回 data对象;
- 「PHP」设计模式介绍
引言 最近再看PHP设计模式相关的一些技术文章,网上有关PHP的设计模式范例很少,这里做一些总结仅供参考,不足之处望提出. 参考资料: <大话设计模式>程杰 什么是设计模式 设 ...
- 大数据学习--day05(嵌套循环、方法、递归)
嵌套循环.方法.递归 图形打印 public static void main(String[]arg) { /** * * * * * * */ // 3 2 1 0 // 1 3 5 for(in ...
- 面试乐融集团Python开发工程师有感
这是笔者第一次面试,,乐融集团位于朝阳区朝阳公园的乐融大厦.是下午两点的笔面试,笔者是一点半到的,然后在里面等了会,开始笔试 笔试题并不是太难,就是考的比较宽,因为笔者是校招,所以笔试题出来了数据结构 ...
- Java学习笔记二十二:Java的方法重写
Java的方法重写 一:什么是方法的重写: 如果子类对继承父类的方法不满意,是可以重写父类继承的方法的,当调用方法时会优先调用子类的方法. 语法规则 返回值类型.方法名.参数类型及个数都要与父类继承的 ...
- 008---vim编辑器
vim 编辑器 三个模式 三个模式之间切换 图 命令模式进入编辑模式 A:行末 a:向后 i:向前 I:行首 o:向上 O:向下 命令模式 复制 yy:复制光标所在行 4yy:向下复制四行 剪切(删除 ...