下面的软件是必需的 支持 的 系统。可以是 (包括 版 版,版) (包括版本) 或之后的版本 从 开始默认就是安装的。而对于较早版本的 来说,你可 以从 免费下载 我还推荐你使用下面的软件 ,特别是包含在其中 工具。这也是可以从 免费下载的。 及之后的版本,也可以是免费的 版本,你可以从 下载该版 本。如果你使用的是 或其他版本),你应该从 下载 开发扩展。用 之后的版本,就不需要安装这个开发扩展。 如果你需要另外的基于的图形设计工具支持, 将会有很大帮助。关于其他对 于 设计和开发有用的软件请见附录。 在第章中的一些例子仅在 下可用,但本书其他例子都是可以在 的任何版本 中运行的。 关于代码示例 本书中的示例源代码可以到 本书配套网页(免费注册)或 下载。 本书结构 本书主要由六个部分组成,按一般的先后顺序讲解了你需要理解的功能。但是如果你想跳过直奔 某一个主题,如或者动画部分,本书也适合你做非线性的旅行”。下面对每一部分做一个简介。 第一部分:背景 本书是通过比较与其他技术来介绍的,它帮助你决定在何时使用 第章深入探索 ,为你接下来理解 打基础,这些 你也会在实际工作中遇到。第章重点讲解编 程模型中最独特的地方,以及程序员还未理解的特点。 第章:为什么使用 第章: 揭秘。 第章:的重要新概念。 第二部分:构建应用程序 第二部分将向你讲解如何集成和部署一个外观老式的 应用程序(虽然它也有一些奇特的效果 如变换、非矩形窗口和玻璃效果)。我们从介绍控件的实现开始,这些控件有些是你想要的, 也有一些是你想不到的。接下来两个章节讲解了如何在用户界面上排布这些控件(以及其他元素)。最后 第章通过讲解如何用不同的方式来采用基于的用户界面,并打包和部署完整的应用程序。这不仅仅 包括传统的独立 应用程序,还包括更像网贞的应用程序。 第章:控件介绍 第章:缩放、定位和变换元素。 第章:使用进行布局。 第章:构建及部署一个应用程序。 第三部分:为专业开发人员设计的功能 第三部分涉及的功能不仅仅在应用程序中必须使用,也可以在很大程度上改进开发流程。因此, 它们对于那些志在创建可维护和健壮的程序(或组件)的专业开发人员来说是不可或缺的。 第章:资源。 第章:数据绑定。 第章:样式、模板、皮肤和主题。 第四部分:通过富媒体使程序领先于时代 这一部分将涵盖最受人瞩目的特性。对和图形、动画、视频等的支持将允许你创建令人 神往的用户体验,这些特性以及提供它们的方式使得与以前的系统完全不同。降低了将这些内容 融入你的软件的门槛,因此,你才可以尝试一些过去从来不敢尝试的功能。 第章:图形 第章:图形 第章:动画 第章:音频、视频、语音和文档 第五部分:高级主题 第五部分涉及的主题是为高级应用程序开发人员和控件的开发人员设计的。由于现有的控 件可以完全改变样式,所以大大减少了创建自定义控件的需求 第章:与 和 的互操作性。 第章:用户控件和自定义控件。 第章:使用自定义进行布局。 第六部分:附录 书中的些约定 书中用特别的字体表示术语和特殊条目,这些字体包括: 字体意思 楷体当我第一次提及一个新术语或者词时,我将使用档体,有时也会为了强调使用楷体 代码体在屏幕提示信息、代码列表、命令示例和文件名中使用代码体。在代码列表中,体的代码体 表示需根据实际替换 浅灰色的代码体用于表示 元素和或关键字;粗浅灰色的代码体表示元素名称和 或字符串;粗黑色的代码体表示特性;有底纹的代码体表示和中的类型名 在整本书中,你会找到以下一些帮助栏: (常见问题解答)中通常是读者可能对本书中某个主题提岀的问题,然后它会提供简明的解答。 (深入挖掘)中通常是高级的或者比帮助栏周围的文字更详细的关于这个主题的信息。如果你对某个 主题比较好奇,可以好好看看深入挖掘ˆ的内容;但是如果你没有兴趣,可以忽略。 提示”是一些可以在真实世界中帮助你的信息。它们通常会提供一些捷径或者替代方法,使得任务更 加简单、快速或者产生更好的结果。 注意”会告诉你一些动作或者条件,该动作或条件会引起一个不该出现的或不可预测的结果,它还会 告诉你如何避免产生这样的结果 致谢 首先,我不仅要向我的妻子 表示感谢,也要向她表示深深的歉意。令人遗憾的是,我在本书里 所写的一切都没有办法弥补我过去-年中使她经受的磨难。在编写本书的过程中,我意识到两点,相信我 的妻子也对这两点十分清楚:我写的书不会少于页;要写这样一本书,我就不得不冷落我的家人。 在新婚的第一年写第一本书也许还不算太糟糕,可这一年我们又初次为人父母。虽然,我可以在儿子 入睡之后完成大部分的写作工作,但我却舍弃了太多和我妻子在一起的宝贵时光。然而在整本书写作期间 都显示出了不可思议的耐心和理解比我所应得的要多得多。当离交稿时间越来越近,她为了让 我能有充足的时间工作,每天早上点就叫我起床,并悉心照顾我,帮助我保持身体健康。在我整理内容 的时候,她甚至可以(站在我身后)提岀她的想法和意见。总而言之,在我全神贯注坐在笨拙的小电脑前 的时候,她照顾我,照顾我们的儿子,照顾我们的家,还有生活中的方方面面。她自始至终大度、谦虛 苦解人意。 ,我爱你,我还想对你说声对不起。 虽然写作过程是孤寂的,但书却凝聚了许多辛勤工作的人们的智慧和心血。在此,我想花一些时间来 感谢他们中的一些人,并按他们名字排序。 特别感谢 他是中特性的开发主管,本书的章节是由他写成的,这远胜 于我自己去勉为其难。加入了 的观点和意见,对于所有想涉足的读者来说无疑是有极大益处的。 还对本书的其他章节进行了非常细致的审校,提供了极有价值的意见。 许多微软的同事也很爽快地答应审校-些章节,并提岀了很好的反馈意见。在此我想感谢(按字母顺 序排列) 和 我还要感谢 和 有了他们的批准我才 能写本书。 我打心底感谢的工作人员,特别是 ,因为我不可能奢求比这更好的出版团队了。他们 从没有质疑书的篇幅和风格是否符合 (揭秘)系列,也从来没有人责备我花的时间太长了(虽然 在这个过程中我的确得到过有关进度的暗示)!他们没有给我任何束缚,所以我可以写一本我想写的书。 当我问是否可以彩色印刷这本书时,他不但这样做了,还十分有创意地把所有的示例代码按语法进行 着色。 我还想感谢我的父母,是他们让我在上小学的时侯就拓宽视野,接触计算机编程。如果你有孩子,在 他们还小、还很在意你的意见的时候,请带他们了解编写软件的神奇艺术。(甚至可以让他的体验更 加有趣!) 最后,我要感谢你购买了本书,感谢你至少已经读到了这里!我希望你继续读下去,继续与我分享这 令人痴迷的探索之旅! 目录 第一部分背景 第章为什么创造 回顾过去 步入 作为 的组成部分 为托管代码而设计 强调声明式描述 小结 第章 揭秘 定义 元素和特性 命名空间 属性元素 类型转换器 标记扩展 对象元素的子元素 内容属性 集合项 更多类型转换 编译:将 与过程式代码 混合使用 在运行时加载和解析 编译 关键字 小结 抱怨: 太过冗长不便于输入 抱怨:基于的系统性能差 第章 的重要新概念 逻辑树与可视树 依赖属性 依赖属性的实现 变更通知 属性值继承 对多个提供程序的支持 附加属性 路由事件 路由事件的实现 路由策略和事件处理程序 路由事件实践 附加事件 命令 内建命令 使用输入手势执行命令 带有内建命令绑定的控件 漫游类层次 小结 第二部分构建应用程序 第章 控件 内容控件 按钮 简单容器 带头()的容器 控件 选择器 菜单 其他控件 控件 文本和墨水控件 小结 第章尺寸缩放、定位与变换元素 控制尺寸 高度和宽度 和 控制定位 对齐 内容对齐 应用变换 组合变换 小结 第章使用面板做布局 改变行和列的尺寸 交互改变 尺寸 共享行和列的尺寸 与其他面板的比较 原始面板 处理内容溢出 剪辑 滚屏 缩放 把它们拼合:创建一个类似 的可收缩、可停靠、可改变尺寸的窗格 小结 第章构建并部署应用程序 标准 应用程序 类 类 创建并显示对话框 维持并恢复应用程序状态 部署 基于导航的 应用程序 和它们的导航容器