XAML是eXtensible Application Markup Language的英文缩写,相应的中文名称为可扩展应用程序标记语言,它是微软公司为构建应用程序用户界面而创建的一种新的描述性语言。XAML提供了一种便于扩展和定位的语法来定义和程序逻辑分离的用户界面,而这种实现方式和ASP.NET中的"代码后置"模型非常类似。XAML是一种解析性的语言,尽管它也可以被编译。它的优点是简化编程式上的用户创建过程,应用时要添加代码等。
目录
提示:
XAML的发音为"Zamel"(有些人读做"zammel"),笔者经常开玩笑地将其读成"折磨"。虽然XAML包含了许多新规则、元素和语法,但是我并不认为学习它是一个折磨人的过程。只要读者稍微具备一些HTML基础知识,就可以快速地掌握 XAML中的大部分内容。 如今在WPF的官方网站上已经提供了一些很实用的工具,可以将其他格式的图形文件转换为XAML文件的形式。例如我们就可以将 3DMax制作出的3D动画转换为XAML,这样WPF程序就可以直接通过转换好的XAML文件产生和3DMax制作出的3D动画相一致的效果。
大多数的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是强类型化的。
XAML是可扩展的,正如它的名字指明的那样。开发人员可以创建自定义的控件、元素和函数来扩展XAML。而且由于XAML各元素在本质上就是WPF类的映射,所以开发人员可以很轻松地使用面向对象的技术对XAML元素进行扩展。也就是说我们可以开发一些自定义控件和组合元素,并将它公开给用户界面设计人员和其它的开发人员使用。
XAML、Windows Presentation Foundation 和 Microsoft .NET Framework 3.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 文件,并报告所产生的任何错误。同样地,在 Expression Blend 中打开现有项目时,分析程序将读取项目文件夹中包含的 .xaml 文件,尝试分析元素并在“设计”视图中的美工板上显示文档。在这两种情况下,如果分析程序遇到错误,将禁用美工板,并且 Expression Blend 将显示一则错误消息,其中包含用于打开“XAML”视图的链接,以便您纠正该错误。分析错误也会报告在“结果”面板中的“错误”选项卡上。