WPF学习之X名称空间详解

时间:2021-07-24 01:31:19

X名称空间里面的成员(如X:Name,X:Class)都是写给XAML编译器看的、用来引导XAML代码将XAML代码编译为CLR代码。

4.1X名称空间里面到底都有些什么?

x名称空间映射的是:,望文生义,它包罗的类均与解析XAML语言相关,所以亦称之为“XAML名称空间”。

与C#语言一样,XAML也有本身的编译器。XAML语言被解析并编译,最终形成微软中间语言生存在措施集中。在解析和编译XAML的过程中,我们经常要报告编译器一些重要的信息,如XAML编译的功效应该和哪个C#代码编译的功效合并、使用XAML声明的元素是public还是private访谒级别等等。这些让措施员能够与XAML编译器相同的工具就存在X:名称空间中。

WPF学习之X名称空间详解

WPF学习之X名称空间详解

我们注意到,它分为Attribute、标签扩展、XAML指令元素三个种类。下面我们讲讲它们的具体用法:

4.2      X名称空间中的Attribute

前面我们已经讲过,Attribute和Property是两个层面上的对象,Attribute是语言层面上的对象,是给编译器看的,Property是面向东西层面上的对象,是给编程逻辑看。而且一个标签中的Attribute大部分对应东西的Property。在使用XAML编程的时候,如果你想给它加一点特殊的符号来转变XAML对它的解析,这时候就需要特别的给它添加一些Attribute了。好比,你想报告XAML编译器将哪个编译功效和阿谁C#编译的类合并,这时候就必需为这个标签添加X:Class  Attribute来报告编译器。X:Class并不是东西成员,而是重X空间硬贴上去的。让我们浏览一下常用的Attribute。

4.2.1    x:Class

这个Attribute是报告XAML编译器将XAML编译器编译的功效和后台编译功效的哪一个类进行合并,使用x:Class有以下几点要求:

这个Attribute只能用于根节点。

使用x:Class的根节点的类型要与x:Class的值所指示的一致。

x:Class的值所指示的类型在声明的时候必需使用partial关键字。

x:Class已经在分解最简单的XAML的时候已经讲过,在这就不久不多讲了。

4.2.2     X:ClassModiffier

这段代码是报告XAML编译器有标签编译成的类具有什么样的访谒级别。

使用这个Attribute的时候需要注意的是:

标签必需具有x:Class Attribute。

X:ClassModiffier的值必需与X:Class所指定类的访谒权限一致。

X:ClassModiffier的值随后台代码编译语言的差别而有所差别。

4.2.3    X:Name

我们之前已经提过XAML是一种声明式语言,但你是否想过XAML标签声明的是什么呢?其实,XAML标签声明的是东西,一个XAML对应着一个东西,这个东西一般是一个控件类的实例。在.NET平台上,类是引用类型。引用类型的实例一般都是以“引用者---实例”的形式成对呈现的,而且我们只能通过引用者来访谒实例。当一个实例不在被任何引用者引用的时候,它将作为内存垃圾被销毁。

常见的引用者是引用变量,但不是独一的。好比下面这段XAML代码:

 

<Window x:Class="WpfApplication2.Window5"  

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  

        Title="Window5" Height="300" Width="300">  

    <Grid>  

        <StackPanel Height="218" HorizontalAlignment="Left" Margin="19,31,0,0"  VerticalAlignment="Top" Width="237">  

            <TextBox Height="23" Width="120" />  

            <Button Content="Button" Height="23" Width="75" />  

        </StackPanel>  

    </Grid>