Silverl“.NET研究”ight for Windows Phone 7开发体验

  直接下水

  正如学习游泳应该下水尝试一下,而不是坐在教室里看书,学习Windows Phone 7开发技术也应该亲身实践一下,而不是仅仅翻阅资料。那么,怎样实践呢?不必想得太复杂,这里所说的实践就是找个需求实现一下。那么,找个什么需求来实现呢?也不必想得太复杂,作为一名程序员,我们每天都在帮助别人实现需求,可我们自己的需求呢?千万别告诉我你没有需求哦!想象一下,当你拿到一个Windows Phone 7手机,你会希望它为你做点什么特别的事?从这点出发,发挥你的想象力,你应该能找到一个起点的,比如说,写个课程表应用。

  有了需求,很自然就想寻找实现需求的工具,说到这里,你可能马上想到价格不菲的Visual Studio 2010和Expression Studio 4,有的话当然是好,没有的话也不用担心,因为微软提供了免费的Expression Blend 4 for Windows Phone和Visual Studio 2010 Express for Windows Phone,足以应付常见的Windows Phone 7开发需求了。装好开发环境之后,可以做个Hello World试一下,就像图1这样:

图1

  很多人觉得Hello World太过简单以至于不屑一顾,我不是这么想的,我认为Hello World的价值之一在于用最简单的方式验证开发环境是否成功安装和正确设置,而这正是后续故事得以展开的基准点。

  在开发Windows Phone 7的应用时,我喜欢用Expression Blend来设计用户界面,然后用Visual Studio来编写内部逻辑。Expression Blend提供了丰富的设计体验,其中一个我最喜欢的特性是设计时数据的支持,你可以按照图2所示的方式从XML文件里导入现有的数据:

图2

  然后通过拖放把数据绑定到控件上,如图3所示:

图3

  此外,你也可以让Expression Blend为你自动生成设计时数据。当你在Expression Blend里设计好用户界面之后,就可以在Visual Studio里为控件编写事件处理程序了。如果你在Expression Blend的Options里设置了"使用Visual Studio创建和编辑事件处理程序的代码",如图4所示:

图4

  那么当你在图5所示Expression Blend的Properties面板上双击控件事件旁边的编辑框时,Visual Studio会打开对应的代码文件,并定位到对应的事件处理程序,如果该事件处理程序还没有,Visual Studio会为你创建一个。当然,如果你比较极客,喜欢手工编写XAML,那么Visual Studio基本上已经可以满足你的所有需求了。

图5

  应用的开发和测试是密不可分的,当你想运行并测试应用时,就轮到Windows Phone 7模拟器出场了,图6像你展示了我们的程序在模拟器中运行的样子:

图6

  你还可以通过Visual Studio在模拟器里调试你的应用。不过,这个模拟器只支持系统自带的软键盘输入,你无法通过电脑的键盘进行输入,这会为输入测试数据造成一些不便。

  善用资源

  虽然Expression Blend和Visual Studio已经提供了很多Windows Phone 7控件,但这显然无法满足日益增长的需求,于是微软发布了Silverlight for Windows Phone Toolkit,通过附带的示范程序(如图7所示),你可以感受一下这些组件能够实现什么功能和效果:

图7

  最新版本是Feb 2011,里面包含了以下组件:

  1. AutoCompleteBox
  2. ContextMenu
  3. DatePicker
  4. GestureService/GestureListener
  5. ListPicker
  6. LongListSelector
  7. Page Transitions
  8. PerformanceProgressBar
  9. TiltEffect
  10. TimePicker
  11. ToggleSwitch
  12. WrapPanel

  如果你在使用期间遇到一些奇怪的问题,请别急着自己解决,先看看别人是否也遇到这些问题,另外,你也可以看看是否有人提交了相关的补丁,除非你一眼就能看出问题所在,或者你享受解决问题的过程。我在使用LongListSelector控件时就遇到一个奇怪的问题,我在一个页面上使用这个控件,里面显示一组作业,然后通过新的页面来新建和编辑作业,每当我从新的页面返回时,LongListSelector控件都无法显示刚才新建的作业或者更新的内容,经过一番调查,我最后发现LongListSelector控件没有考虑到打开新的页面这种情况。当我们打开新的页面时,Windows Phone 7为了节约资源会把原来那个页面卸载(unload);而当我们从新的页面返回时,布局系统会重新计算并构建原来那个页面,这会导致LongListSelector控件在子元素的处理上出现错误(这个问题在最新的Feb 2011版本里也没得到修复)。

  从这里我们不难看出,虽然Windows Phone 7的应用属于本地应用,但它和我们平时接触到的Windows应用程序是不同的,你需要搞清楚页面的生命周期以及页面的导航是如何工作的,除非你的应用只有一个页面。

  此外,微软也提供了适用于Windows Phone 7的Prism,如果你打算在Windows Phone 7应用里使用MVVM模式,那么Prism里面提供的一些类型就会帮上忙。当然,你也可以选择其它MVVM框架,比如说,MVVM Light Toolkit,还有Caliburn Micro。类库和框架固然能够节省一定的工作量,但如果你想切实地提高自己的能力,那么需要的就是知识和技术,你可以读一读微软上海闵行企业网站制作发布的《Windows Phone 7 Developer Guide》(英文)和《Windows Phone 7开发者培训包》(中文),你也可以上Windows Phone 7 Development Best Practices Wiki看看别人有什么最佳实践,吸取一下别人的经验。如果你有些问题确实不知道怎么处理,还可以试着到App Hub的论坛或者博客园的博问上问一问。

  技术之外

  如果你希望写个好的应用,那么仅仅关注技术方面的内容是不够的,你需要把应用看做一组完整的用户体验,然后站在用户的角度考虑每个细节。

  举个例子吧,你认为图8中的页面设计有没有问题?

图8

  没有,一切看起来都是那么正常,至少表面上确实如此,用户可以完成相关的操作,页面的相关功能也没有bug,可是,在图9中你会看到,每次输入完毕之后都不能直接关闭页面,因为确定按钮被软键盘挡住了:

图9

  要想关闭页面,用户就需要先单击页面空白处关闭软键盘,然后才能单击确定按钮关闭页面。你觉得这是不是一个问题呢?我在测试这个应用的时候,一开始只是觉得有点儿麻烦罢了,但当我重复上海徐汇企业网站制作/www.93tj.com'>上海企业网站设计与制作这个过程大概十次之后,我就开始痛恨这个多余的步骤,并且深深地体会到这个小小的细节为用户体验带来了多么糟糕的影响!于是,在开发后续的功能时,我尝试了新的设计,用Application Bar按钮替代传统按钮,就像图10中显示的这样:

图10

  这样,用户在输入完毕之后马上可以单击确定,这个小小的改动使得整个操作体验变得更加平滑、流畅。

  再举一个例子吧,你觉得图11中的页面设计有没有问题?

图11

  这是一个支持通过标签进行筛选的笔记应用,上面显示当前标签,单击这个控件将会打开一个新的页面,用户可以在新的页面里选择其它标签,下面显示根据当前标签筛选的笔记。还是那句老话,这个设计很正常,用户照样可以完成相关的操作,那么,还有什么需要修改的吗?

  试想一下,既然这是一个关于笔记的应用,那么它的主要任务自然就是显示笔记内容,而笔记标签作为一种辅助的手段,不应该占用本来就不多的手机屏幕空间,它应该在用户需要的时候才出现。为此,我修改了页面的设计,使显示笔记内容的ListBox占满页面可用空间,然后把显示笔记标签的ListBox隐藏在屏幕下方,修改后的程序运行效果如图12所示。

图12

  当用户单击Application Bar上的按钮时,显示笔记标签的ListBox将会从屏幕下方外面向上平移。这样,应用就可以最大限度地利用有限的屏幕空间来完成最重要的任务了。

  很久之前,我看过一部电影,名字叫做《和你在一起》,里面有个情节至今仍然历历在目,余教授在听完他的学生拉的小提琴之后对这个学生说:"都对,就是不好,你的音乐没有感情,没有感情的音乐怎么感染听众?"现在的用户对于品质的要求越来越高,他们不再仅仅因为你正确地实现了他们的需求就选择你的应用,他们更加重视你是否切身处地的为他们设想、考虑他们的感受,因为选择是有成本的,他们一旦选择了你的应用,他们就需要尝试适应你的应用,因此他们会评估这样的付出是否值得。下次,当你打算开发一个应用时,不妨问一下自己:凭什么你的应用值得用户选择?

  着眼未来

  去年Windows Phone 7首次发布时,有人戏说它是2007年水平的iPhone,潜台词当然是指它和当年的iPhone一样退化为单任务方式,比较讽刺的是,当微软信心满满地解释不支持多任务是为了保证电池的续航性时,苹果宣布iOS支持多任务了,尽管那还不是真正的多任务。

  然而,正当Windows Phone 7的开发者学习如何处理单任务方式导致的各种问题并为之而发愁时,微软又宣布Windows Phone的后续版本将会支持真正的多任务。如果你希望你的应用在支持多任务的Windows Phone手机上有出色的表现,你现在就要把它考虑进你的设计里了。

  为Windows Phone 7开发应用还有一个广受关注的问题--应用的部署。在Windows Phone 7之前,我们可以自行制作CAB安装包,然后把它复制到手机上安装,可惜,这种情况在Windows Phone 7上不复存在,因为微软决定Windows Phone 7的应用必须通过Marketplace部署。此外,如果你想在真机上测试你的应用,你需要注册成为Windows Phone 7的开发者并交纳99美元的会费(目前中国大陆的开发者还不能直接注册),否则你无法把你的应用部署到真机上。为了解决这个问题,Long Zheng、Rafael Rivera 和 Chris Walsh 一同发布了一款名为"ChevronWP7"的 Windows Phone 7 手机开发者解锁工具:

图13

  随后,微软与Windows Phone 7破解团队ChevronWP7进行了会晤,共同探讨ChevronWP7解锁工具的官方化,我相信他们的合作会为我们开发者提供更多部署的选择。

  经常留意业界动态,及时学习所需知识,合理利用各种资源,综合考虑不同因素,这些都是开发一个好的应用必不可少的,然而,如果没有踏踏实实地踏出第一步,一切都是空谈,因此,最终我们又回到了最初的问题:学习Windows Phone 7开发技术应该亲身实践一下。

时间: 2024-10-15 17:32:10

Silverl“.NET研究”ight for Windows Phone 7开发体验的相关文章

Silverlight for Windows Phone 7开发体验

直接下水 正如学习游泳应该下水尝试一下,而不是坐在教室里看书,学习Windows Phone 7开发技术也应该亲身实践一下,而不是仅仅翻阅资料.那么,怎样实践呢?不必想得太复杂,这里所说的实践就是找个需求实现一下.那么,找个什么需求来实现呢?也不必想得太复杂,作为一名程序员,我们每天都在帮助别人实现需求,可我们自己的需求呢?千万别告诉我你没有需求哦!想象一下,当你拿到一个Windows Phone 7手机,你会希望它为你做点什么特别的事?从这点出发,发挥你的想象力,你应该能找到一个起点的,比如说

微“.NET研究”软“重启”Windows Phone 7 设计的经过

微软集团副总裁.Windows Phone 项目主管 Joe Belfiore 在位于雷蒙德的微软总部拿着三星的 Windows Phone 7 原型机. 微软员工将 2008 年 11 月称为"重启(The Reset)".当月,微软终止 Windows 手机项目的全部工作,重新开始. 此举显示出微软已经将自己带进了多么糟糕的境地.接受 Wired.com 采访的员工一致认为这是一件好事.尽管这家软件巨头早在上海企业网站设计与制作 1996 年就开始开发基于 Windows CE 的

你必须知道的Windows Phone 7开发

托管代码是你唯一的选择 对于普通的ISV和开发者来说,托管代码将是唯一的选择.你将不能使用C++来编写程序,同时,也不能对已有的native dll或者系统函数进行P/Invoke调用.也就是说,不要奢望将你的某些代码封装在native dll里面然后在托管代码里面调用. 两种开发模型可以选择 而编写托管代码将有两种方式,一种是编写Silverlight的应用程序,另外一种方式是编写XNA的程序. 这里的Silverlight 程序不同于常规意义上的Silverlight,虽然它是脱胎自Silv

微软员工证实 Windows 9 正在开发中

尽管Windows 8尚未正式发布,但关于下一代的Windows传闻已经不是一两天的事了.日前,微软员工又向外界证实,微软的确已经开始着手Windows 9的开发了. 微软合作伙伴技术主管James Akrigg日前在英国Misco Expo 12展会上证实,Windows 9将成为该公司的下一个重大项目. 在被问及个人对Windows 8的期望时,Akrigg回应称,Windows 8开发没有达到完美的地步,因为公司现在已经有所分心,开始开发Windows 9. 除此之外,关于之前所曝光的Wi

Windows下Perl开发环境的安装与配置

Perl是一种深受世界各地开发者喜爱的实用摘要和报表语言,虽然它是在Unix上诞生和发展起来的,但在Windows编程领域也已经占有一席之地. 在ActiveState等公司的领导之下,从1995年中期开始Perl开始了稳定地发展,不仅增加了标准的Perl功能,而且增加了许多面向Windows的功能,比如OLE和COM集成等. 事实上,到目前为止所有Perl程序员都已经能够确信,自己为UNIX服务器写的Perl应用移植到Windows服务器后同样能够流畅.稳定地运行,即使是fork实现这类长期以

jQuery 2.0将对Windows 8应用开发提供全面支持

本周,微软宣布著名开源JavaScript库jQuery在2.0版本中即将提供对Windows 8应用开发的全面支持,这对诸多Windows 8应用开发者来说自然又多了个工具.这一消息是微软的互通博客上发出的,博文中指出微软旗下的Open Technologies目前正与appendTo一起为jQuery 2.0提供对Windows 8应用支持做努力,目前jQuery 2.0已经发布了beta版. appendTo的支持主管Jonathan Sampson就此事写道:"jQuery就要为Wind

Windows Server 2008开发指南

透过Windows Server 2008开发指南看到微软服务器系统家族的进步,Windows Server操作系统的市场占有率在逐年上升,这和微软IIS服务器的进步.安全稳定性提升有着密不可分的联系.今天Vista地带帮助大家解析Windows Server 2008 Developer Story . 一.Win2008最重要的变革要数它的核心服务 IIS Internet信息服务器.与上一代Windows Server2003的IIS6相比,IIS7有着什么样的进步呢? 1.增强的安全性和

Silverlight for Windows Phone 7开发系列(3):多媒体开发

前言 在上篇文章讲述了如何新建一个Silverlight for Windows Phone的应用程序,这篇文章讲述如何在Windows Phone上进行多媒体应用的开发.同时介绍当前Windows Phone Beta版本所支持媒体文件格式,以及讲述Windows Phone多媒体开发的一些限制性和注意点. MediaElement控件的使用 使用Silverlight开发一般的多媒体应用,使用MediaElement控件就足够了,MediaElement控件支持音频和视频文件,也支持本地和网

Silverlight for Windows Phone 7开发系列(2):第一个Silverlight程序

前言 上一篇讲述了Windows Phone 7开发环境的搭建,这篇文章讲述如何创建,部署,调试以及运行Silverlight for Windows Phone应用程序,同时介绍如何Microsoft Visual Studio 2010 Express for Windows Phone和Windows Phone Emulator(模拟器)的使用.在文章中会建立一个叫做SilverRadio的Silverlight for Windows Phone应用程序,我把这个程序取名为银光收音机,