前言

已有一年多没有碰WP相关的开发了. 近期经常看博客园的文章, 发现开发WP应用的同学很多, 其中博问频道关于"WPF", "C#", "WP8"相关的问题比较多, 其中很多问题我之前也遇到过, 所以这里写一篇回顾文档, 希望我的经验能给大家带来一些帮助.

我最早的WP手机是Mozart, 这部水货机给我带来了无尽的乐趣, 还有苦恼. Metro的界面设计和交互方式, 非常符合我对现代应用体验的期待, 但应用商店中app的质量数量之少, 质量之差, 让人感觉WP的前景不妙. 我的WP开发学习就是从这时开始, 先后根据自己的需求, 捣鼓出好几款软件并提交到了应用商店. 尽管已经一年多未更新, 大多数应用仍有很多忠实用户, 并收到众多网友给我的中肯建议, 还有应用更新的请求.

写这篇文档, 一方面是回顾下之前的开发经验, 还有就是及时充电, 跟进WP SDK的进度, 为自己/网友继续带来一些新鲜气息.

一些作品

手指画画

"手指画画"是我开发的第一款应用, 前后更新了好几版, 最新版本是5.0, 最后更新时间是2013年7月. 这个也是我自己最满意的作品, 但后来业余时间太少, 中间还有一个6.0版本, 压了一年, 直到现在也没有提交发布. 网友热情让我感动, 作为一款免费软件, 我加上了捐赠链接, 竟然收到了接近100元人民币! 很让人意外, 加这个链接时, 我曾自嘲到, 这个按钮如果有人点真是见鬼了.

下载地址: http://www.windowsphone.com/zh-cn/store/app/%E6%89%8B%E6%8C%87%E7%94%BB%E7%94%BB/7e0f3d2f-890a-4818-bbbd-6ee57689325e

蜂鸟浏览器

这个也我花费好几个周末时间. WP7时代的默认浏览器, 尽管操作体验优秀, 但功能少的可怜, 用起来也不够顺手. 我就有想法搞一个浏览器, 也就有了这个作品.

下载地址: http://www.windowsphone.com/zh-cn/store/app/%E8%9C%82%E9%B8%9F%E6%B5%8F%E8%A7%88%E5%99%A8/1ca4292a-36a1-4e1b-98ff-d1899003fee0

其他

另外, 我练手的软件都提到了市场, 有兴趣可以查阅此链接: 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这几个标签后, 基本界面就可以完成了. 编写界面几点建议.

经验二

  1. 多用自适应布局, 高度/宽度自适应, 方便做多分辨率设配;
  2. 多用资源, 比如字体\颜色\背景等, 不要写具体的值, 而是用资源代替, 参考Windows Phone 主题资源 这样你的界面可以自动适应各个主题;
  3. 将样式整理为资源文件导入, 类似开发网页的css文件, 一次定义, 多次复用, 切勿拷贝;
  4. 所有文本通过文本资源使用, 方便实现本地化;
  5. 所有界面数据显示使用绑定, 不要在代码中直接给元素设置显示内容. 比如显示一个文本, 不要用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编程回顾的更多相关文章

  1. (转)Windows驱动编程基础教程

    版权声明     本书是免费电子书. 作者保留一切权利.但在保证本书完整性(包括版权声明.前言.正文内容.后记.以及作者的信息),并不增删.改变其中任何文字内容的前提下,欢迎任何读者 以任何形式(包括 ...

  2. 《windows核心编程系列》二十一谈谈基址重定位和模块绑定

    每个DLL和可执行文件都有一个首选基地址.它表示该模块被映射到进程地址空间时最佳的内存地址.在构建可执行文件时,默认情况下链接器会将它的首选基地址设为0x400000.对于DLL来说,链接器会将它的首 ...

  3. 《Windows核心编程》之“完成端口”(对所有IO都是如此,不仅仅是对socket)

    <Windows核心编程>第10章开头部分一再强调:“IO Completion Port”是“构建高性能.可升缩的应用程序”的最佳设施之一,它不仅适用于处理设备IO,也适用于其它越来越多 ...

  4. windows多线程编程星球(一)

    以前在学校的时候,多线程这一部分是属于那种充满好奇但是又感觉很难掌握的部分.原因嘛我觉得是这玩意儿和编程语言无关,主要和操作系统的有关,所以这部分内容主要出现在讲原理的操作系统书的某一章,看完原理是懂 ...

  5. windows核心编程 - 线程同步机制

    线程同步机制 常用的线程同步机制有很多种,主要分为用户模式和内核对象两类:其中 用户模式包括:原子操作.关键代码段 内核对象包括:时间内核对象(Event).等待定时器内核对象(WaitableTim ...

  6. windows核心编程---第九章 同步设备IO与异步设备IO之同步IO

    同步设备IO 所谓同步IO是指线程在发起IO请求后会被挂起,IO完成后继续执行. 异步IO是指:线程发起IO请求后并不会挂起而是继续执行.IO完毕后会得到设备的通知.而IO完成端口就是实现这种通知的很 ...

  7. windows核心编程---第八章 使用内核对象进行线程同步

    使用内核对象进行线程同步. 前面我们介绍了用户模式下线程同步的几种方式.在用户模式下进行线程同步的最大好处就是速度非常快.因此当需要使用线程同步时用户模式下的线程同步是首选. 但是用户模式下的线程同步 ...

  8. storysnail的Windows串口编程笔记

    storysnail的Windows串口编程笔记 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据 ...

  9. windows核心编程---第二章 字符和字符串处理

        使用vc编程时项目-->属性-->常规栏下我们可以设置项目字符集合,它可以是ANSI(多字节)字符集,也可以是unicode字符集.一般情况下说Unicode都是指UTF-16.也 ...

随机推荐

  1. 竞赛题解 - [CF 1080D]Olya and magical square

    Olya and magical square - 竞赛题解 借鉴了一下神犇tly的博客QwQ(还是打一下广告) 终于弄懂了 Codeforces 传送门 『题目』(直接上翻译了) 给一个边长为 \( ...

  2. ABAP术语-R/3 Repository Information System

    R/3 Repository Information System 原文:http://www.cnblogs.com/qiangsheng/archive/2008/03/11/1100076.ht ...

  3. linux系统基础之---RAID(基于centos7.4 1708)

  4. layui form表单 input输入框获取焦点后 阻止Enter回车自动提交

    最简单的解决办法,不影响其他操作,给提交按钮增加 type="button" 属性 完美解决 <button type="button" class=&q ...

  5. apache上.htaccess转向nginx上配置.htaccess伪静态规则

    nginx上配置.htaccess伪静态规则 在apache上.htaccess转向,只要apache编译的时候指明支持rewrite模块即可. 但是换到nginx上方法会有不同,有人说把.htacc ...

  6. Active Job 基础

    开发中涉及到调用三方服务API,运行时间长,结果不需要实时反馈给用户这样的任务,都可以使用异步处理.常见的场景包括:发邮件和短信.图片处理.定时清理等.爬虫. 后端处理软件可以自行选择这里选择了sid ...

  7. Zabbix 3.4.11版本 自定义监控项

    一.实验思路过程 创建项目.触发器.图形,验证监控效果: Template OS Linux 模板基本涵盖了所有系统层面的监控,包括了我们最关注的 几项:ping.load.cpu 使用率.memor ...

  8. 树莓派安装samba

    (1) sudo apt-get install samba samba-common (2)mkdir /home/lin/share #(文件路径自己添加) (3)sudo chmod 777 / ...

  9. C语言实例解析精粹学习笔记——18

    <C语言实例解析精粹>中编译环境采用的是Turbo C 2.0.但是这个编译器年代久远,较新的编译器对书中的某些例子支持不好,在学习的时候同时做一些笔记. 实例18:将一个无符号整数转换为 ...

  10. 教你阅读MSDN英文文档,迅速提升编程能力

    在教大家阅读英文文档之前,首先给大家明确一个概念.C#和.NET的区别? 有一定编程经验的同学应该多多少少知道这方面的概念,但是可能模糊,理解的不一定深刻.我在这里简单给出两者的基本定义: C#:仅仅 ...