对于使用Microsoft技术的开发人员来说,这是一个激动人心的时刻。众多新平台、新技术以及新工具的不断涌现,使开发人员的舞台迅速扩大。其中,来自微软的一个新平台是.NET Framework 3.0,Windows Presentation Foundation(WPF)是该平台的一个核心组件,也是本书的主题。WPF为开发人员和设计人员提供了一个统一的平台,便于他们创建能够充分利用现代PC硬件设备的图形功能的多媒体(rich-media)应用程序。 在过去的几十年中,我们经历了使用命令行界面的漫长时间。今天的应用程序用户,希望使用新型的、吸引人的可视化交互界面,其中部分原因是他们在Internet上面对的是媒体和内容都很丰富的用户界面。WPF正是为迎合这种需求而诞生的,它可以综合使用多种类型的媒体,包括动画、视频和音频,来创建富用户界面。此外,通过使用一种新的标记语言XAML和一套新的设计工具Microsoft Expression Blend,设计人员和开发人员能够在开发同一个项目时实现无缝合作,这在以前是不可能的。在WPF推出之前,设计人员创建各种图形元素,并将这些图形元素以图像文件的形式交给开发人员,然后开发人员使用这些图形元素构建用户界面。现在,设计人员可以使用Expression Blend设计用户界面,并将设计模型保存为XAML文件,然后只需将XAML文件交给开发人员,开发人员再在Visual Studio中使用WPF编写代码即可。 本书将详细讲解Windows Presentation Foundation的概念和构成组件。通过本书可以学习如何创建富用户界面,如何使用WPF提供的各种新控件,以及如何利用WPF提供的新内容模型。本书将探讨WPF对象模型,以及WPF新提供的子系统,例如附属属性系统(dependency property system)和事件传递模型(routed event model)。在本书中还将介绍如何开发和配置用于桌面和浏览器的WPF应用程序。本书中还包括新的XAML语法(XAML是一种为WPF应用程序定义用户界面的新标记语言,不管这些应用程序是基于Windows环境的还是面向Web的)、Expression Blend使用基础和Microsoft新提供的图形设计工具。 WPF是一个非常大的平台,本书将尽可能多地涉及其各个方面,我们的目标是使读者不仅了解WPF平台提供了哪些内容,而且学会如何使用该平台。当然,因为WPF是一个很大的平台,所以本书中不可能囊括全部内容,但是我们力争让读者掌握开始使用WPF的一些基本知识。本书不仅有趣、富有教育性,而且能够为读者使用Windows Presentation Foundation 开发富用户界面打下坚实的基础。 本书读者对象 本书主要面向准备学习使用Microsoft新的呈现架构(presentation framework)WPF开发应用程序的.NET Framework开发人员。对于正在考虑使用新的Expression Blend系列设计工具的设计人员,以及那些想了解这些工具是如何加强与设计人员合作的开发人员,本书也是很有帮助的。对于没有.NET开发经验的程序员,本书在学习新的XAML语法上有一定的参考价值。但是对于这部分读者,书中的大部分内容比较高级,因此建议先学习.NET 2.0,作为学习WPF的第一步。 本书适合以下几类读者: ● 准备学习WPF新平台的Microsoft .NET应用程序开发人员。 ● 准备研究Microsoft Expression Blend工具,学习使用WPF及相关工具所提供的协作特性的设计人员。 此外,熟悉以下相关技术的人员,也很适合阅读学习本书: ● Microsoft .NET Framework ● C# ● Web服务 ● HTML ● CSS 以上读者,对.NET Framework和C#有一个基本理解是必需的,而熟悉Web服务、HTML标记语言以及CSS概念对于学习本书中的内容有帮助,但不是必需的。对于没有.NET Framework和C#基础的开发人员,可先学习《.NET Framework 2.0 高级编程》和《C# 2005高级编程(第4版)》(均由清华大学出版社引进并出版)这一类的书籍。 读者并不需要逐章学习本书。我们建议先学习第1章至第3章,对WPF和XAML有一个基本理解,然后浏览后面的几章,从中挑选出您感兴趣或需要的部分进行学习。 本书主要内容 本书主要介绍WPF开发技术、模式和案例。 本书以“WPF概述”作为开始。在第1章中,首先回答了“WPF是什么?”、“如何开始使用WPF?”以及“WPF能够带来什么?”等几个问题,然后详细分析了WPF开发平台提供的各个子系统及其图形特征。 概述WPF之后,将进入WPF开发技术部分。本书通过使用Visual Studio创建几个示例程序,带领您快速进入应用程序开发。此外,还将介绍XAML—— 创建用户界面的新标记语言。XAML实际上是独立于WPF的一项技术,但在WPF中广泛使用了XAML。 掌握了WPF的基本概念和开发技术之后,本书将带领读者进入设计工具的世界。Microsoft提供了许多引人注目的新的设计工具系列。在本书中将学习使用新的Microsoft Expression Blend工具。通过使用Expression Blend,可以创建高级的用户界面,学习实现样式、布局与动画。读者还将发现,将界面设计保存到XAML文件中,然后在Visual Studio中使用完全相同的标记语言编写应用程序逻辑是多么的容易。 接下来,将介绍如何使用WPF创建特殊效果,包括位图效果、变换,以及使用画刷对象创建玻璃或反射效果等。本书演示了这些技术,并为在应用程序中创建绚丽的可视化元素提供了基础。 在学习完特殊效果之后,将介绍如何使用WPF创建自定义控件。WPF提供了一个极好的自定义对象模型,允许运用各种风格和已存在的各种元素模板。该模型是一个令人满意的新模型,允许将几乎任何元素放置在另一个元素中。通过这个新功能,在整个创建自定义控件的过程中,都不会遇到问题。当然,任何事物都不是绝对的,使用WPF创建自定义控件,也有可能会遇到一些问题。本部分内容包括在什么情况下需要考虑创建自定义控件,以及如何创建自定义控件。 接下来,将进入WPF应用程序的企业应用开发部分。使用WPF可以创建两种风格的应用程序:基于Windows的单机运行的应用程序与基于Web的应用程序。这两种类型的程序基于相同的代码,即XAML与.NET。这意味着为应用程序指定目标主机环境,只需要简单改变工程文件的设置并管理这些配置即可。这项功能是非常强大的,在本书的企业开发主题中,对这一功能进行了全面介绍。 在理解了应用程序模型与配置之后,读者可能想了解安全问题。WPF的安全基于.NET 2.0的CAS安全模型,与所选择的应用程序模型以及运行环境也有关。如果WPF程序运行于浏览器中,将涉及到Internet区域安全设置。本书将深入介绍这些内容。 在探讨了WPF应用程序开发、配置基础,并全面分析了WPF应用程序的安全之后,本书将进入一些高级主题。这些高级主题之一就是如何混合使用Win32与WPF代码。本书中将涉及互操作的相关问题。在Win32程序中使用WPF以及在WPF程序中使用Win32都是可行的,本书将介绍如何实现这一特征,从而可以使读者快速掌握如何将WPF用于Win32程序中。 本书最后深入研究了体系结构、WPF架构、XAML以及多线程问题。此外,还介绍了Windows Workflow Foundation(WF)与Windows Communication Foundation(WCF),从而使读者可以熟悉.NET Framework 3.0的其他组件。在理解了这些重要组件之后,读者还将学习如何构建一个简单的WCF服务与一个简单的WF工作流应用程序。 本书组织结构 本书先介绍了相关背景,包括Microsoft为什么以及怎样从长期以来使用的Win32 平台转向WPF。然后,对WPF及其核心组件和子系统进行了概述,接下来介绍了Expression Blend工具的使用,并通过示例演示了如何创建富用户界面。后续几章具体针对与WPF开发相关的各个主题。在本书的最后简要介绍了与WPF平行的其他两个组件,这些组件共同构成了.NET Framework 3.0这一重要而又强大的平台。 本书各章内容如下所示: ● 第1章,“WPF概述”——本章探讨了近年来Windows API的演化,以及这种演化如何为WPF这一新平台铺平了道路。然后,从整体上介绍了WPF的体系结构,包括新的图形功能以及各个子系统,还介绍了相关的开发工具。 ● 第2章,“WPF与.NET编程”——本章首先介绍了构建与运行WPF应用程序的需求,然后是应用程序的各子系统,例如附属属性与事件传递系统。此外,还介绍了WPF提供的各种控件,以及如何使用平台提供的新结构修改和扩展这些控件。 ● 第3章,“WPF应用程序深入剖析”——本章介绍了在WPF中可以使用的各种应用程序模型,例如可以独立运行的与基于浏览器的应用程序。对相关程序文件及配置设置都进行了剖析,从而使读者可以快速理解并能开发WPF应用程序。 ● 第4章,“使用Microsoft Expression Blend构建富用户界面:第一部分”——本章介绍了WPF应用程序设计人员可以使用的新工具,重点介绍了Microsoft Expression Blend。在本章中读者可以了解到Expression Blend提供的设计环境,以及工程文件结构。本章内容还包括创建矢量图形、布局、动画和控件。 ● 第5章,“使用Microsoft Expression Blend构建富用户界面:第二部分”——本章在第4章介绍的相关内容的基础上,介绍了如何为程序添加交互功能以处理用户输入、事件与命中测试。本章还给出了一系列的动画示例程序,以及与WPF绘图相关的API。本章还演示了Expression Blend与Visual Studio 2005提供的协作特性。 ● 第6章,“特殊效果”——本章探讨了WPF提供的丰富功能与特殊效果,包括画刷、位图效果以及变换等。有了这些功能,使用WPF 可以很容易地快速创建富用户界面。 ● 第7章,“自定义控件”——本章专门讲解了在WPF中自定义控件的开发。通过模板与类型的扩展支持,在WPF中自定义控件所需做的工作是很少的。但是在很多情况下需要创建自定义控件。本章不仅介绍如何创建自定义控件,还介绍了如何确定是否使用模板与类型等内置功能的支持。这些内置功能是非常强大的。 ● 第8章,“WPF企业开发”——本章探讨了使用WPF开发企业级应用程序时需要考虑的许多问题。应用程序模型、配置、运行环境、安全考虑、导航、状态管理以及本地化等内容,在本章中都进行了探讨。 ● 第9章,“安全”——本章探讨了WPF的安全特性。WPF应用程序的安全主要与所选择的程序类型和运行环境有关。本章内容包括操作系统安全、CAS安全、Internet安全沙箱以及ClickOnce安全等。 ● 第10章,“WPF与Win32交互”——本章主要针对WPF应用程序与已存在的Win32应用程序之间的交互问题。本章将解答如何在Win32应用程序中使用WPF,以及如何在WPF应用程序中使用Win32等问题。通过学习本章,读者将了解到在WPF与Win32应用程序中HWND的区别。 ● 第11章,“高级开发主题”——本章将深入研究本书中涉及的有关问题。首先深入分析WPF体系结构,介绍WPF架构中重要的类,例如Application类、DependencyObject类。然后深入探讨XAML的语法与结构,以及WPF应用程序中的多线程问题。最后,深入分析了.NET Framework 3.0的其他两个组件:Windows Workflow Foundation与Windows Communication Foundation。 使用本书的条件 为了开发WPF应用程序,以及创建本书中的示例程序,必须首先安装以下软件: ● Windows SDK ● .NET Framework 3.0 运行时组件 ● 带有Orcas CTP WinFX开发工具的Visual Studio 2005或Orcas release of Visual Studio 2005 注意: 在本书第2章中将给出上述所需软件的更多细节,以及介绍如何获取这些必需的组件。 源代码 在练习本书中的示例时,读者可以手动输入所有的代码,也可以使用随书附带的源代码。本书中的所有源代码均可在或http://www.tupwk.com.cn/downpage站点下载。登录Web站点后,只需找到本书的标题(可以使用Search功能或标题列表)并单击显示本书详细内容的页面上的Download Code链接即可获取源代码。 由于很多书籍的名称类似,因此通过ISBN查找可能会更容易一些。本书的ISBN号是978-0-470-04180-2。 在下载源代码之后,只需使用最喜欢的解压缩工具对其进行解压缩即可。另一个途径是到Wrox代码下载主页面/dynamic/books/download.aspx,这里有本书及其他所有Wrox书籍的源代码。 勘误表 我们尽最大努力确保本书在叙述和代码中没有错误。然而,没有人是完美的,错误时有发生。如果读者在本书中发现什么错误,例如拼写错误或编码错误,我们将会非常感谢您能反馈给我们。通过将错误添加到勘误表中,您也许能为其他读者节约数小时的时间,也可以帮助我们提供更高质量的书籍。 请给wkservice@tup.tsinghua.edu.cn发电子邮件,如果您的意见是正确的,我们将在本书的后续版本中采用。 要找到本书的勘误表,可以登录Web站点,然后搜索本书的书名或者使用标题列表。然后,在本书的详细内容页面上,单击Book Errata链接。在这个页面上读者可以查看到所有已提交的、由Wrox的编辑发布的错误信息。也可以在页面找到一个完整的标题列表,这个列表包含了每本书的勘误表链接。 如果想参与讨论,可以加入P2P论坛,网址是。这些论坛是基于Web站点的系统,其作用是让读者发布与Wrox的书籍和相关技术有关的消息,并与其他读者和技术用户联络。这些论坛提供订阅功能,当读者感兴趣的主题发布时,论坛会通过电子邮件把这些消息发送给读者。Wrox的作家、编辑、其他行业专家及和您一样的读者都会出现在这些论坛上。 在中,读者将找到很多不同的论坛,这些论坛不仅能帮助读者阅读本书,还可以帮助读者开发自己的应用程序。要加入这些论坛,可按如下步骤操作: (1) 登录并单击Register链接。 (2) 阅读用途条款并单击Agree。 (3) 填写加入论坛所必需的信息和可选信息并单击Submit。 (4) 读者将收到一封电子邮件,该邮件告诉读者怎样验证账户并成功加入。 没有加入P2P论坛也可以阅读该论坛上的信息,但是如果希望发布自己的消息,则必须加入该论坛。 加入之后,就可以发布新消息或者回复其他用户发布的消息了。可以在任何时间阅读Web站点上的消息。如果希望某个论坛能将最新的消息通过电子邮件发送给自己,则可以单击论坛列表中该论坛名称旁边的Subscribe图标。 要获得如何使用P2P论坛的更多信息,可以阅读P2P FAQ列表中的问题及其答复,这些问题与论坛软件的工作原理及很多与P2P和Wrox相关的常见问题有关。要阅读FAQ,可以单击任意P2P页面上的FAQ链接。