XAML 2009 引入了对公共语言运行时(CLR)和其他编程语言中常用基元的多种数据类型的 XAML 语言级别支持。 XAML 2009 添加了对这些基元的支持:x:Object、x:Boolean、x:Char、x:String、x:Decimal、x:Single、x:Double、x:Int16、x:Int32、x:Int64、x:TimeSpan、x:Uri、x:Byte和 x:Array
XAML 标记中语言基元的以前技术
在以前 WPF 版本的 XAML 中,可以通过映射包含 .NET Framework 的 CLR 基元定义类的程序集和命名空间来引用 CLR 语言基元。 其中大多数都位于 mscorlib 程序集和 System 命名空间中。 例如,若要使用 Int32,可以声明以下映射(随后显示示例用法):
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<Application.Resources>
<sys:Int32 x:Key="intMeaning">42</sys:Int32>
</Application.Resources>
</Application>
XAML 2009 语言基元
按照约定,将显示 XAML 和所有其他 XAML 语言元素的语言基元,包括 x: 前缀。 这就是 XAML 语言元素通常用于实际标记的方式。 在 WPF 中 XAML 的概念文档中以及 XAML 规范中遵循此约定。
x:Object
对于 CLR 支持,x:Object 基元对应于 Object。
此基元通常不用于应用程序标记,但对于某些方案(例如检查 XAML 类型系统中的可分配性)可能很有用。
x:Boolean
对于 CLR 支持,x:Boolean 基元对应于 Boolean。
XAML 将 x:Boolean 的值分析为不区分大小写。 请注意,x:Bool 不是接受的替代方法。 有关 XAML 语言规范定义,请参阅 [MS-XAML] 第 7.2.17 节和 7.4.11 节。
x:Char
对于 CLR 支持,x:Char 基元对应于 Char。
字符串和字符类型与 XML 级别的文件的整体编码进行交互。 有关 XAML 语言规范定义,请参阅 [MS-XAML] 第 7.2.7 节和 7.4.1 节。
x:String
对于 CLR 支持,x:String 基元对应于 String。
字符串和字符类型与 XML 级别的文件的整体编码进行交互。 有关 XAML 语言规范定义,请参阅 [MS-XAML] 第 7.2.6 节。
x:Decimal
对于 CLR 支持,x:Decimal 基元对应于 Decimal。
XAML 分析本质上是在 en-US 区域性下完成的。 在 en-US 区域性下,小数组件的正确分隔符始终是一个时间段(.),无论开发环境的区域性设置如何,还是运行时加载 XAML 的最终客户端目标。
有关 XAML 语言规范定义,请参阅 [MS-XAML] 第 7.2.14 节和 7.4.8 节。
x:Single
对于 CLR 支持,x:Single 基元对应于 Single。
除了数值以外,x:Single 的文本语法还允许标记 Infinity、-Infinity和 NaN。 这些令牌被视为区分大小写。
如果文本语法中的第一个字符 x:Single 或 e,E 可以支持科学表示法形式的值。
有关 XAML 语言规范定义,请参阅 [MS-XAML] 第 7.2.8 节和 7.4.2 节。
x:Double
对于 CLR 支持,x:Double 基元对应于 Double。
除了数值以外,x:Double 的文本语法还允许标记 Infinity、-Infinity和 NaN。 这些令牌被视为区分大小写。
x:Double 可以支持科学表示法形式的值。 使用字符 e 或 E 来引入指数部分。
有关 XAML 语言规范定义,请参阅 [MS-XAML] 第 7.2.9 节和第 7.4.3 节。
x:Int16
对于 CLR 支持,x:Int16 基元对应于 Int16,x:Int16 被视为已签名。 在 XAML 中,缺少加号(+)登录文本语法将隐含为正有符号值。
有关 XAML 语言规范定义,请参阅 [MS-XAML] 第 7.2.11 节和 7.4.5。
x:Int32
对于 CLR 支持,x:Int32 基元对应于 Int32。
x:Int32 被视为已签名。 在 XAML 中,缺少加号(+)登录文本语法将隐含为正有符号值。
有关 XAML 语言规范定义,请参阅 [MS-XAML] 第 7.2.12 节和 7.4.6 节。
x:Int64
对于 CLR 支持,x:Int64 基元对应于 Int64。
x:Int64 被视为已签名。 在 XAML 中,缺少加号(+)登录文本语法将隐含为正有符号值。
有关 XAML 语言规范定义,请参阅 [MS-XAML] 第 7.2.13 节和 7.4.7 节。
x:TimeSpan
对于 CLR 支持,x:TimeSpan 基元对应于 TimeSpan。
时间日期格式的 XAML 分析本质上是在 en-US 区域性下完成的。
有关 XAML 语言规范定义,请参阅 [MS-XAML] 节 7.2.16 和 7.4.10。
x:Uri
对于 CLR 支持,x:Uri 基元对应于 Uri。
检查协议不是 x:UriXAML 定义的一部分。
有关 XAML 语言规范定义,请参阅 [MS-XAML] 第 7.2.15 节和 7.4.9 节。
x:Byte
对于 CLR 支持,x:Byte 基元对应于 Byte。
Byte
/
x:Byte 被视为未签名。
有关 XAML 语言规范定义,请参阅 [MS-XAML] 第 7.2.10 节和 7.4.4。
x:Array
对于 CLR 支持,x:Array 基元对应于 Array。
可以使用标记扩展语法在 XAML 2006 中定义数组;但是,XAML 2009 语法是一个语言定义的基元,不需要访问标记扩展。 有关 XAML 2006 支持的详细信息,请参阅 x:Array 标记扩展。
有关 XAML 语言规范定义,请参阅 [MS-XAML] 第 7.2.18 节。
WPF 支持
在 WPF 中,可以使用 XAML 2009 功能,但仅适用于未编译标记的 XAML。 WPF 的标记编译 XAML 和 XAML 的 BAML 形式目前不支持 XAML 2009 关键字和功能。
将 XAML 2009 功能与 WPF 一起使用的方案是,如果你创作松散的 XAML,然后使用 XamlReader.Load将该 XAML 加载到 WPF 运行时和对象图中。 WPF System.Windows.Markup.XamlReader 及其 Load 可以将 XAML 2009 语言关键字和功能处理成有效的对象图表示形式。