前言

2008年在世界经济历史上是一个不平凡的一年,在这一年中,美国的五大投资银行有两家破产。金融危机席卷全球,美国的失业率在过去的一年从4%飙升到了10%,有些城市的失业率甚至高达20%;加拿大的就业数字也是惨不忍睹,多伦多的失业率剧升到了12%(2009年8月数据)。在这样暗淡的经济背景下,有关WPF的工作却在快速增长,过去两年,和WPF相关的工作职位在北美和欧洲每半年翻一番,WPF初级职位的薪水在5万美元到7万美元之间,高级职位在10万美元以上。一般来说,新的开发平台在中国的应用比欧美要晚2~3年,但随着互联网的普及和软件开发外包到中国,这一迟后时间正在缩短。可以预见,在未来几年内,和WPF相关的工作职位也会在中国快速增长;所以,学习WPF编程技术正当其时,拥有WPF技术必将使你在职场上更加挥洒自如,也就是说,学习WPF就是获取新的工作机遇。

WPF是基于.NET的新一代界面开发平台,它实现了桌面应用程序和互联网应用程序的统一编程,实现了程序员长期梦想的数据驱动用户界面,融合了动画、多媒体的功能,跨越了图形和控件、控件和排版等技术上的界限,在很短的时间内实现并超越了Flash和PDF的相关功能。近年来微软在软件开发上的投资额已和中等国家的GDP相当,其中.NET是微软最大的投资项目。在.NET 2.0之后,微软停止了WinForm的开发,而WPF实际上是微软在今后一段时间内唯一要不断投入的用户界面开发平台,这一平台在Vista、Windows 7和Window Server上得到了广泛的支持。建立在WPF上的应用程序将会自动随着.NET的不断开发而自动拓展新的功能:把WPF和WCF(Windows Communication Foundation)技术相结合,可以很容易地实现面向服务的软件架构(SOA,Service Oriented Architecture);WPF对图形流的支持,使得开发GIS应用程序更加方便;基于SilverLight和Ajax技术是互联网开发的新热点。所以,企业把应用程序的界面建立在WPF之上,不仅可以极大地缩短开发周期,而且可以把同一技术用在不同的项目上,从而极大地降低开发成本。比如过去开发桌面应用程序和互联网应用程序一直是两个不同的开发团队,而使用WPF,我们只需要一个开发团队。在过去的20年内,微软一直是用户界面开发的领跑者;若企业把应用程序建立在WPF之上,就不会担心落伍。所以,应用WPF就是降低企业的开发成本。

本书特点

本书深入浅出地介绍了WPF中的各种新概念,使用了大量图表和实例力图以整体的形式把WPF展现在读者的面前。笔者推崇Scott Meyers的写作风格(Scott Meyers的C++系列丛书在软件界有广泛的影响——笔者注),即以散文的笔调描述技术细节,以避免枯操的叙述;希望读者在阅读本书时有一种像朋友在一起聚会的感觉,边喝啤酒边聊天,在聚会结束时,您会发现自己已经掌握了WPF技术。因此,阅读本书是通向WPF专业编程的捷径

由于WPF是在.NET 3.0之后引入的,故读者在使用WPF之前应该已经熟悉 .NET的编程环境、C#语言等基本知识。本书使用简单的UML(Unified Modeling Language)描述WPF类和类间的关系,若您具有UML的基本知识,对阅读本书会有帮助。书中的例子在Visual Studio 2008和.NET FrameWork 3.5上调试过,有时笔者也使用了微软的Expression Blend 2.0调试,但后者不是必需的。

本书光盘使用说明

本书的配书光盘含有约100MB的源程序,所用的语言为C#和XAML。所有的例程在Visual Studio 2008和.NET Framework 3.5上调试通过,笔者在创建某些例程时,使用过Microsoft Blend 2.0。Microsoft Blend工具在创建WPF界面时非常有用,但对于运行本书的例程不是必需的。本光盘的内容是对本书的补充,因书中着重介绍WPF编程模型和基本概念,光盘中则含有完整的源代码。

1.光盘中的目录使用Yingbao.Chapterxx格式,如第1章的例程在Yingbao.Chapter1的目录下,第2章的例程在Yingbao.Chapter2的目录下等。全书共18章,整个光盘含有18个目录。

2.在每个目录下有一个相应的Visual Studio解决方案文件,其文件名采用Yingbao.Chapterxx.sln格式,如第1章Visual Studio解决方案文件名为Yingbao.Chapter1.sln,第2章Visual Studio解决方案文件名为Yingbao.Chapter2.sln等。该文件中含有一个或多个项目,如Yingbao.Chapter13解决方案中含有六个项目。运行某个项目,您需要在Visual Studio中的Solution explore窗口下单击鼠标右键,在弹出菜单中选择“Set as StartUp Project”条目,然后,您只要按下“F5”功能键,或在Visual Studio的“Debug”菜单下选择“Start Debug”即可。

3.例程中命名空间的名字采用Yingbao.Chapterxx的格式,如第1章所有例程中的类都在Yingbao.Chapter1命名空间中,第2章的所有例程中的类都在Yingbao.Chapter2命名空间中。虽然对于本书的例程来说使用不同的命名空间不是必需的,但对于组织大型项目,使用命名空间是良好的习惯。

4.例程中的类名、属性名、域名、方法名采用通用电气(GE)编程规范,读者也可用其他的公司或自己公司的编程规范。

感谢

写作是一个费时费力的工作,笔者在写作本书的时候,得到了家人的支持和理解。电子工业出版社的杨福平副总编和袁金敏编辑对本书的出版做了大量的工作,笔者在此表示衷心感谢。

联系方式

最后,若您有什么建议和意见或者发现书中的错误,请和笔者联系:Yingbao.Li@gmail.com。

李应保

2009年9月8日于加拿大