XAML(发音为"zammel")是一种基于XML的标记语言,它也可以创建Avalon对象树。XAML是eXtensible Application Markup Language的简称,(XAML中的"A"不是代表"Avalon,而是"应用程序"。这是由于XAML将来不仅用于描述Avalon场景,还可以用于.NET的对象层次结构)。
下面是上述UI树例子的XAML代码:
http://schemas.microsoft.com/winfx/avalon/2005 Name="Page1"> Height="24px" Width="2.6 cm" Margin="20,10,10,10"> Text selection Select Country: Height="24px" Width="100px"> IsSelectionRequired="True">
XAML标签与UI树中的对象相对应,属性描述对象的性质,标签数据则代表了可视元素的文本内容。例如,下面的Label标签与Label对象相对应,它的VerticalAlignment属性设置为"Top",用户看到的文本内容是"Select Country:":
Select Country:
面板
面板本身没有文本内容,它们是其他元素的矩形容器。总共有七种面板,每种的布局都不同:BulletPanel、Canvas、DockPanel、Grid、StackPanel、TabPanel和ToolBarOverflowPanel。面板可以层层嵌套。
资源与本地化
资源这一概念是苹果在开发Macintosh的前身Lisa时最先提出的,目的是简化应用程序的本地化工作。文本翻译只是本地化的一半工作,因为同一文本在不同语言中长度不同。
英语里的"Open File"变成法语"Ouvrir fichIEr",从9个字符变成14个,增加了55%!Win32应用程序中一部分描述性代码易于本地化,但是采用过程化编写的代码则很难本地化。
但是Avalon应用程序的所有的UI都可以用描述性方式设计,这就带来以下好处:
·本地化翻译:XAML中所有可视文本都被定义为标签内容,这样本地化工具就很容易提取和替代这些文本。此外,当文本长度发生变化时,由于布局会自动缩放,使得无需人工调整布局。
·无障碍设计:由于UI的所有文本元素都采用描述性、层次性形式,这样残疾人也能容易的获取文本信息。WinFX最近新增了语音识别.NET类,这样只需在代码隐藏文件中加入几行代码,就可以实现语音识别及合成功能,用户就能通过语音向文本框内输入信息。
·工具:Avalon采用描述性模型,便于开发生成描述性数据的工具。这样就可以用可视编辑器开发大部分UI。
·设计:开发人员无需学习XAML,就可以利用适当的工具创建应用程序的UI。
综上所述, XAML的强大功能基于两种抽象:第一种是业务逻辑抽象(通常用过程化语言编写于代码隐藏文件,把业务逻辑与表示隔离),第二种是文本内容抽象(把设计与文本隔离,使本地化与数据绑定更为容易)。
.NET应用程序中的XAML
XAML代码不仅可以描述静态场景(如HTML、Postscript),也可以描述动态效果,如动画甚至事件处理代码。在XAML中创建UI与用HTML开发网页很类似。但是XAML的性能要强大的多,它增加了高级2D和3D向量图形、动画、数据绑定、事件处理以及语音识别与合成。