7. XAML 中 x 名称空间的介绍
1.简介
x 名称空间映射 http://schemas.microsoft.com/winfx/2006/xaml
,包含解析XAML语言相关的类。
XAML 编译器将XAML编译成微软中间语言和 C# 编译器将 C# 编译也成微软中间语言,使用 X名称空间可以将C#的编译结果和 C# 的编译结果合并。
x 名称空间是程序员能够和 XAML 编译器沟通的工具集合。
工具集合:
名称 | 种类(在XAML中出现的形式) |
---|---|
x:Array | 标签扩展 |
x:Class | Attribute |
x:ClassModifier | Attribute |
x:Code | XAML指令元素 |
x:FileModifier | Attribute |
x:Key | Attribute |
x:Name | Attribute |
x:Null | 标签扩展 |
x:Shared | Attribute |
x:Static | 标签扩展 |
x:Subclass | Attribute |
x:Type | 标签扩展 |
x:TypeArguments | Attribute |
x:Uid | Attribute |
x:XData | XAML指令元素 |
2.Attribute
X:Class
使用要求:
1.只能位于根节点
2.x:Class的值所指代的类型需要与根节点一致
3.x:Class的值所指代的类型必须使用 partial 关键字
x:ClassModifier
作用:告诉XAML编译由标签编译成生成的类具有的访问控制级别
使用要求:
1.此标签必须具有 x:Class Attribute
2.x:ClassModifier的值必须与x:Class的值所指代的类型的访问控制级别一致
3.x:ClassModifier的值随后台代码的编译语言不同而不同
x:Name
XAML是一种声明式的语言,XAML标签声明的是对象,一个XAML标签对应一个对象,单XAML只负责声明对象,不负责为对象声明引用变量,x:Name就是用来为标签对象声明引用变量名的。
作用:
1.告诉XAML编译器,当一个标签带有x:Name的时候,除了为这个标签生成对应实例,还需要为这个实例创建一个引用变量,变量名就是 x:Name 的值。
2.将 XAML 标签所对应对象的 Name 属性也设置为 x:Name,并将这个值注册到UI树上,方便查找。
使用 Name 还是 x:Name:
1.Name属性定义在FrameworkElement类中,是WPF控件的基类,所有WPF控件都具有Name这个属性。
2.当一个元素具有 Name 属性时,使用 Name 和 x:Name 效果是相同的。
3.这两个元素是不能同时使用的,否则编译不通过。
4.对于没有 Name 属性的元素,为了创建变量能够在 C# 代码中访问,只能使用 x:Name。
5.x:Name的功能包含了 Name属性的功能,可以全部使用 x:Name 来保持一致性和可读性。
x:FileModifier
x:ClassModifier是设置根节点,即类的访问级别,x:FileModifier是用来设置类中每个变量的访问级别的,如:Button控件对应类的访问级别。没有设置的全部都是默认的internal级别。
使用 x:FileModifier 前提是已经包含了 x:Name或者Name属性,否则不能使用。
x:Key
在XAML中,可以将需要多次使用的内容提取到资源字典中,需要使用的时候使用 key 来找到它。
x:Key 的作用就是为资源内容添加用于检索的索引。
x:Shared
与 x:Key
配合使用,当 x:Shared
为 true 的时候,那么每次检索到这个对象的时候,得到都是同一个对象,为 false的时候就是这个对象的一个副本。
3.标记扩展
标记扩展(Markup Extension)实际上就是MarkupExtension
类的直接或者间接派生类。
x:Type
x:Type
应该是一个数据类型的名称。一般情况下,使用的是数据类型的实例或者是实例的引用,但有时候也会用到数据类型本身。
x:Null
显示的为一个属性赋值一个空值。
x:Array
作用:通过他的Items属性向使用者暴露一个类型已知的 ArrayList 实例,ArrayList 内成员类型由 x:Array 的Type来指明。
<Grid>
<ListBox>
<ListBox.ItemsSource>
<x:Array Type="sys:String">
<sys:String>1</sys:String>
<sys:String>2</sys:String>
<sys:String>3</sys:String>
</x:Array>
</ListBox.ItemsSource>
</ListBox>
</Grid>
x:Satatic
作用:在XAML文档中使用数据类型的 static
成员。x:Satatic
访问的 static
成员一定是数据类型的属性或字段。
4.XAML指令元素
x:Code
作用:可以包含一些文本放置在后置代码的C#代码。一般不用。
x:XData
专用标签。
WPF将包含数据的对象称为数据源,用于把数据源中的数据提供给数据使用者的对象被称为数据提供者(Data Procider)。WPF中包含许多数据提供者,其中一个类是XmlDataProvider
,是专门用于提供 XML
化的数据。
<XmlDataProvider x:Key="data" XPath="/xml/mybook">
<x:XData>
<Book xmlns="">
<Historys>
<History name="1" />
<History name="3" />
<History name="2" />
</Historys>
<Maths>
<Math name="111" />
<Math name="112" />
<Math name="113" />
</Maths>
</Book>
</x:XData>
</XmlDataProvider>