标题：XAML
简介
也就是说在开发一个应用程序时，我们可以将开发工作分成开发人员和设计人员两个团体分别进行，各自负责后台程序代码逻辑和前台程序界面的设计，这样就使得开发人员和设计人员之间的协作更通畅，也极大地发挥了他们的专长。
XAML的发音为"Zamel"(有些人读做"zammel")，笔者经常开玩笑地将其读成"折磨"。虽然XAML包含了许多新规则、元素和语法，但是我并不认为学习它是一个折磨人的过程。只要读者稍微具备一些HTML基础知识，就可以快速地掌握XAML中的大部分内容。　
如今在WPF的官方网站上已经提供了一些很实用的工具，可以将其他格式的图形文件转换为XAML文件的形式。例如我们就可以将3DMax制作出的3D动画转换为XAML，这样WPF程序就可以直接通过转换好的XAML文件产生和3DMax制作出的3D动画相一致的效果。
在wpf中可以很简单的用Xaml使用内置控件或自定义控件,或第三方控件.像微软Excel已经成为数据处理的代名词：数据展示、数据录入、数据分析等操作。如果用户想使用像excel的表格软件,那必须有支持wpf/silverlight的表格控件,比如Spread[1]将Microsoft Excel的强大功能嵌入到WPF 和 Silverlight应用.
优点
XAML简化了.Net Framework 3.0 编程模式上的用户界面创建过程，使用XAML开发人员可以对WPF程序的所有用户界面元素(例如文本、按钮、图像和列表框等)进行详细的定置，同时还可以对整个界面进行合理化的布局，这与使用HTML非常相似。但是由于XAML是基于XML的，所以它本身就是一个组织良好的XML文档，而且相对于HTML，它的语法更严谨、更明确。预计以后大部分的XAML都可由相应的软件自动生成，就如同我们现在制作一个静态页面时，几乎不用编写任何HTML代码就可以直接通过Dreamweaver软件生成一个美观的页面。但是最初通过手动编写XAML代码将是一次绝佳的学习体验，虽然实现的过程繁杂了些，但是将加深您对XAML语法和各个元素的理解。
大多数的WPF程序可能同时包含程序代码和 XAML。我们可以使用XAML定义应用程序的初始界面，而后才编写相应的功能实现代码。我们可以将逻辑代码直接嵌入到一个XAML文件中，也可以将它保留在一个单独的文件中。实际上，能够用XAML实现的所有功能我们都可以使用程序代码来完成。因此，我们根本无需使用任何的XAML就可以创建一个完好的WPF程序。一般来说，程序代码的优势在于流程处理和逻辑判断，而不是界面的构建上。而XAML则是集中关注于界面的编程，我们可以将它和其它的.NET语言配合使用，从而构建出一个功能完善、界面美观的WPF程序。XAML是一种纯正的、用来描述用户界面构成元件和编排方式的标记语言。尽管有部分的XAML语法具备程序设计语言的特性(例如XAML中的Trigger和TRansform)，但是XAML并不是一种用于程序设计的语言，它的功能也不是为了执行应用程序逻辑。
微软推荐XAML被编译成BAML(Binary Application Markup Language-二进制语言程序标记语言)。XAML和BAML都可以被WPF解析，并且将以一种和HTML相似的方式进行界面的呈现。但是和HTML不同的是，XAML是强类型化的。也就是说，HTML会忽略那些它不能识别的元素和属性，而XAML必须在识别所有的元素和属性的情况下，才对页面进行呈现。尽管在XAML中各个属性都是以一个个的字符串(例如Background)表示的，但是这些字符串实际上代表的是WPF中的对象，只有被WPF识别的对象才可以作为元素的属性，所以我们说XAML是强类型化的。
不是HTML
还有一点是我们反复强调的，XAML并不是HTML。尽管XAML在元素的声明、程序样式的设置和指定事件处理程序上都和HTML非常类似，但是XAML是基于XML的，它是WPF的外在表现形式。而HTML主是一种标记语言，仅仅是用来为浏览器呈现页面内容。XAML除了用来呈现信息和请求用户输入等基本的功能外，它还包含了一些高级的特性，例如它提供了对动画和3D众多方面的支持。
XAML是可扩展的，正如它的名字指明的那样。开发人员可以创建自定义的控件、元素和函数来扩展XAML。而且由于XAML各元素在本质上就是WPF类的映射，所以开发人员可以很轻松地使用面向对象的技术对XAML元素进行扩展。也就是说我们可以开发一些自定义控件和组合元素，并将它公开给用户界面设计人员和其它的开发人员使用。
XAML、Windows Presentation Foundation 和 Microsoft .NET Framework3.0 XAML 是 Microsoft® Windows Presentation Foundation (WPF) 的一部分。WPF 是 Microsoft® .NET Framework 3.0 中处理基于 Windows 的应用程序或基于 Web 浏览器的客户端应用程序的可视外观的一类功能。基于 WPF 的应用程序可以在 Windows Vista? 上运行，也可以在安装了 Microsoft .NET Framework 3.0（如果是基于 Web 浏览器的客户端应用程序，还需要安装 Internet Explorer 7.0）的早期版本的 Windows 上运行。
应用
WPF 借助 XAML 来利用标记而不是编程语言（如 C#）来构造精美逼真的用户界面 (UI)。您可以通过定义控件、文本、图像、形状、动画等各种元素，完全采用 XAML 来制作详尽的 UI 文档。由于 XAML 是声明性语言（类似于 HTML），因此如果需要向应用程序中添加运行时逻辑，则需要添加代码。例如，如果应用程序仅使用 XAML，您不仅可以创建并动态显示 UI 元素，还可以对这些元素加以配置令其以受限方式响应用户输入（通过使用事件触发器）。但是，在不添加代码的情况下，该应用程序将不能执行和响应计算，也不能自行创建新的 UI 元素。XAML 应用程序的代码存储在不同于 XAML 文档的单独文件中。这种将 UI 设计与基础代码相脱离的方式，使得开发人员和设计人员能够更加密切地合作完成同一个项目，而不会延误各自的进度。
作用
在 Silverlight 体系结构和 Silverlight 应用程序开发过程中，XAML 发挥着多种重要作用：
1、XAML 是用于声明 Silverlight UI 及该 UI 中元素的主要格式。通常，项目中至少有一个 XAML 文件表示应用程序中用于最初显示的 UI 的"页面"比喻。其他 XAML 文件可能声明其他用于导航 UI 或模式替换 UI 的页。另外一些 XAML 文件可以声明资源，如模板或其他可以重用或替换的应用程序元素。
2、XAML 是用于声明样式和模板的格式，这些样式和模板应用于 Silverlight 控件和 UI 的逻辑基础。您可以执行此操作来模板化现有控件，或作为为控件提供默认模板的控件作者来执行此操作。
3、XAML 是用于为创建 Silverlight UI 和在不同设计器应用程序之间交换 UI 设计提供设计器支持的常见格式。最值得注意的是，Silverlight 应用程序的 XAML 可在 Expression Blend 产品与 Visual Studio之间互换。
4、WPF 还在 XAML 中定义其 UI。就与 WPF XAML 的关系而言，Silverlight XAML 使用共享的默认 XAML 命名空间，且对于其 XAML 词汇具有近似的 WPF 子集关系。因此，XAML 为 UI 在 Silverlight 与 WPF 之间迁移提供了一种有效途径，这样，您就可以针对 Silverlight 执行 UI 设计，然后几乎无需重新设计 UI 图面即可将此相同设计迁移到 WPF。
5、Silverlight XAML 定义 UI 的可视外观，而关联的代码隐藏文件定义逻辑。可以对 UI 设计进行调整，而不必更改代码隐藏中的逻辑。就此作用而言，XAML 简化了负责主要可视化设计的人员与负责应用程序逻辑和信息设计的人员之间的工作流。
6、由于支持可视化设计器和设计图面，因此，XAML 支持在早期开发阶段快速构造 UI 原型，并在整个开发过程中使设计的组成元素更可能保留为代码访问点，即使可视化设计发生了巨大变化也不例外。
根据您自己在开发过程中所扮演的角色，您可能无法广泛地与 XAML 语言或 XAML 语法交互。您与 Silverlight XAML 交互的程度还取决于您所使用的开发环境、是否使用交互式设计环境功能（如工具箱和属性编辑器）以及 Silverlight 应用程序的范围和目的。尽管如此，在开发 Silverlight 应用程序的过程中，您还是可能能够使用基于文本的编辑器在元素级编辑 Silverlight XAML 文件。本主题旨在使您了解 XAML 语言和 XAML 语法的具体信息。此外，本主题还着重介绍 XAML 可能特定于 Silverlight 的用法和行为的某些方面（与其他利用 XAML 的框架（如 WPF 或 WCF）相对照）。使用此信息，您应能够放心地以文本表示形式编辑用于 Silverlight 的 XAML，当此 XAML 文件由工具、标记编译操作或 Silverlight 运行时加载应用程序使用时，保持其声明和目的的有效性。[2]
代码
在 Expression Blend 中，任何给定文档的 XAML 均存储在 .xaml 文件中。如果 XAML 文档有相应的基础代码，该代码将存储在文件名相同但另行添加 .cs 或 .vb 扩展名的文件中。例如，如果 XAML 文档名为“Window1.xaml”，则当代码的编程语言为 C# 时，代码隐藏文件名为“Window1.xaml.cs”。
在生成项目时，WPF 分析程序将读取该项目的 .xaml 文件，并报告所产生的任何错误。同样地，在 Expression Blend 中打开现有项目时，分析程序将读取项目文件夹中包含的 .xaml 文件，尝试分析元素并在“设计”视图中的美工板上显示文档。在这两种情况下，如果分析程序遇到错误，将禁用美工板，并且 Expression Blend 将显示一则错误消息，其中包含用于打开“XAML”视图的链接，以便您纠正该错误。分析错误也会报告在“结果”面板中的“错误”选项卡上。
均衡作用
您可以从 Microsoft® Expression® Design 中将美术资源导出为 XAML，然后将该 XAML 作为资源导入到 Expression Blend 中，以便在 Expression Blend 项目中利用这些资源。其他一些设计应用程序也提供了各种将美术资源转换为 XAML 的工具。您可以在 Internet 上搜索受信任的站点所发布的转换工具。