XAML x 名称空间的介绍

发布时间 2024-01-11 11:27:57作者: x_amos

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>