图书前言

前言

WPF(Windows Presentation Foundation)是专门用来编写程序表示层的技术和工具。它是微软新一代图形展示系统,是用户界面技术进步的重要标志。使用WPF编写的程序比之前的WinForm程序更加简洁清晰。WPF技术适用于微软平台下的桌面系统、浏览器、Windows Phone的开发。因为微软程序的开发理念都一样,仅在类库方面有一些差别。

本书详细介绍WPF中XAML的语法结构、布局方式、常用控件、数据驱动UI的理念、路由事件、图形基础、动画与媒体、动作原则、资源与样式及MVVM设计模式,并通过大量的案例向读者展示WPF的设计思想。案例组织采用分层递进叠加方式,让程序从小变大,由易到难,能够使读者迅速地熟悉编写程序的思想路径,体会到编写程序的乐趣。全书共12章,前4章是有关WPF基础的编程内容和界面UI设计,从第5章开始是WPF的高级进阶。各章内容概述如下。

第1章介绍WPF的编程机制。采用逐层深入的Button案例,讲解WPF平台特性。通过对WPF的运行机制及类层次结构讲解,从而认识WPF的体系结构。

第2章介绍XAML可扩展的应用程序声明式语言的树形结构、复杂属性、附加属性、xmlns指令和名称空间中的标记扩展等。

第3章详细介绍WPF布局原则及各布局面板的适用场合。重点说明Grid从结构中分离布局、尺寸模型、共享尺寸组、跨越行列等特征,并演示了Grid的多种用法。

第4章介绍WPF控件内容模型和模板的新概念。重点说明元素合成、富内容和简单的编程模型的控件原则。在此基础上,学习WPF的内置控件。

第5章介绍数据驱动模型、数据绑定原理及数据绑定的用法。

第6章从Windows操作系统的消息机制出发,介绍事件模型。在WPF中引入路由事件机制,可采用冒泡、隧道、直接3种策略。

第7章从常用的几何图形元素出发,介绍绘制图画、2D形状及属性,让读者进一步认识WPF 3D三维空间坐标系、模型、材质、光源、照相机和变换。

第8章介绍动画工作原理。WPF动画根据计算机的性能和当前进程的繁忙程度,尽可能地增大帧率,比传统动画流畅,实现方式简捷。同时还介绍WPF中动画的常用类型、集成方式和对音频与视频文件的播放方式。

第9章介绍动作使用原则、命令系统及触发器使用方式。

第10章介绍资源的定义、资源类型、适用范围、资源的静态与动态引用方式。特别强调资源字典要遵循“先创建后使用”的规则。

第11章重点介绍样式的构成、如何使用样式及模板,并演示WPF实现换肤的操作步骤。

第12章介绍软件设计模式的起源、概念和原则。对比MVC、MVP和MVVM 3种设计模式的通信方式的差别,重点讲解MVVM设计模式的框架、其三大组件内容结构,用基于MVVM模式的计算器案例证明WPF数据驱动UI的设计思想。

本书由刘晋钢主编,其中第1、4、12章由刘晋钢编写,第2、3章由熊风光编写,第6、7章由况立群编写,第8、9章由刘晋霞编写,第10、11章由张麟华编写,第5章由李丽编写。

本书既可作为高等学校计算机专业学生用书,也可作为计算机从业人员的参考书。作为教材,本书既适用于计算机专业UI设计、软件开发、人机交互技术等课程,也可供职业技术学院计算机专业学生使用。通过本书的学习,读者可以掌握WPF的核心技术,提升程序设计能力,为以后的工作和研究打下坚实的基础。

读者可在清华大学出版社网站(www.tup.com.cn)免费下载本书所有案例的源代码、与本书配套的电子课件以及习题参考答案。使用本书时,遇到资源下载问题,请联系责任编辑fuhy@tup.tsinghua.edu.cn或联系本书作者84161924 @qq.com。

在此,特别感谢刘子民对本书提供的技术支持和帮助,也感谢本书的责任编辑付弘宇对本书所做的审核工作。由于编者的水平有限,书中难免存在不足之处,恳请广大读者批评指正。

教学建议

根据突出应用的原则,从应用层次要求角度考虑,可把“WPF编程基础”课程的教学内容分为基础学习内容、高级进阶内容和提升应用研发能力三部分。

基础学习: 本书的前4章内容是有关WPF基础的编程内容和界面UI设计。详细介绍WPF中XAML的语法结构、布局方式和常用控件,涵盖WPF的新特性、体系结构、XAML基础语法知识、XAML文档的树形结构和常用属性,以及WPF布局原则及布局面板、WPF控件模型、模板及常用控件。学完前4章,读者可以做出赏心悦目的用户界面。

高级进阶: 本书的第5章到第9章是WPF的高级进阶。详细介绍数据驱动UI的理念、图形基础、动画与媒体和动作原则。这部分内容涉及WPF的核心技术,将事件驱动模型提升到数据驱动UI的理念上来,让UI与业务逻辑真正地分离,并使前台的设计师和后台的程序员各司其职。

提升应用: 本书的第10章到第12章是提升学生应用能力部分。详细介绍资源的类型、引用方式、资源字典、样式的构成、使用样式的方法、模板及MVVM设计模式。目前学生开发的不少项目多半都废弃,究其原因主要是,资源分配不合理,样式不美观,没有采用好的设计模式。这部分内容针对上述问题编写,以提高学生的应用研发能力。

本书用于教学的建议如表1所示。

表1教学建议

课程名

(授课对象)WPF编程基础(授课对象可以是计算机科学与技术、软件工程等专业理工类四年制本科)48学时。注: 三年制专科可参考此计划适当修改(例如,可延长到64学时,难度适当降低)

教学目的和要求掌握WPF核心技术、体系结构、数据驱动UI的设计思想及MVVM设计模式,为提升程序开发能力奠定基础

续表

必要的先修课程数据结构、操作系统和面向对象程序设计语言(如C#)

后续可开设实践课程WPF项目实训、基于Kinect的体感设计及手势识别项目研发

章次(学时)要求学生了解内容要求学生掌握内容实践操作项目

第1章引言(2)WPF的地位、体系结构及应用前景WPF的新特性,布局与控件中涉及的容器控件的简单用法数据集成处理能力章节中的Button导出的案例

第2章XAML(2)XAML与HTML的异同点、XAML文档的树形结构XAML的名称空间及属性、类型转换器的用法仿类型转换器中案例,重做一个将字符串转换成对象实例

第3章布局(4)合成布局模型、布局机制、布局常用属性布局面板的用法,布局嵌套生活中常见的布局应用(聊天室、Web等)

第4章控件(4)元素合成、富内容和简单的编程模型的控件原则WPF控件的基本用法、构建控件的思想、用户自定义控件图标设计、登录用户页面、游戏初始化页面、桌面、主题页面等

第5章数据(6)数据模型的发展过程及微软曾用过的数据模型数据绑定机制、值转换机制、数据绑定模型、数据绑定用法INotifyPropertyChanged接口调用、数据绑定列表框

第6章路由事件(6)消息概念、消息循环、Windows编程原理、附加事件路由事件工作机制、RoutedEventArgs类、路由策略实现自定义路由事件,分别采用隧道、冒泡和直接3种策略

第7章图形基础(4)常用几何图形、在WPF 3D中的基本概念,包括WPF的坐标系、各种光源和照相机的工作原理WPF图像特效、绘制图画、控件与形状组合、常用变换使用MeshGeometry3D定义模型,创建三维物体

第8章动画与媒体

(2)动画的概念、原理,传统动画与WPF动画异同点线性插值动画、关键帧动画、路径动画,动画集成设计简单的动画

第9章动作(6)动作原则、命令系统的基本元素及元素间的关系、WPF命令库使用各种触发器、命令与数据绑定实现Windows记事本功能

第10章资源(4)资源的定义、资源的类型、资源的可用范围、使用资源的意义资源的静态引用与动态引用方式、创建和使用资源字典使用资源字典

第11章样式(4)样式的作用定制模板、使用样式的方法设置主题、锁屏、更换壁纸(皮肤)

第12章MVVM设计模式(4)软件设计模式的概念、原则、由来,MVC、MVP和MVVM发展过程MVVM设计模式的框架及其三大组件内容结构及该模式的优点完成基于MVVM的简单计算器,并为该计算器的按钮设计统一风格的样式

编者

2018年1月