zoukankan      html  css  js  c++  java
  • 《深入浅出WPF》学习笔记之x名称空间详解

    x名称空间由来:

    x名称空间里的成员是专门为XAML编译器看的,用来引导XAML编译器把XAML编译成CLR代码,因此x是XAML的首字母。通过x空间的成员告诉编译器怎么编译XAML,生成什么类名,属性的可访问性等。

    x名称空间中的Attribute:

    x:Class,用来告诉XAML编译器把XAML标签的编译结果与后台代码的哪个类合并,只能用于根节点,并且根节点的类型要与后台代码的类保持一致。

    x:ClassModifier,用来告诉XAML编译器把XAML标签编译成的类具有怎样的访问级别,必须具有x:Class Attribute的标签才能应用,并且与指定的后端代码访问级别一致。

    x:Name,用来告诉XAML编译器把创建的对象指向到指定的变量名,这样可以直接在代码中引用该对象。如果标签具有Name属性,同时把Name属性赋值为x:Name指定的值。为了增强代码的统一性,全部使用x:Name来指定对象的变量名。

    x:FieldModifier,用来告诉XAML编译器由该标签生成的类的字段的访问级别,默认为internal。

    x:Key,为资源字典指定key值,在XAML中通过StaticResource标记扩展进行资源检索时使用,并且可以自动向父级元素检索并一直递归直到找到该资源或到达Application。通过在代码中使用.FindResource方法也可以进行递归检索资源。

    x:Shared,与x:Key配合使用,用来指定检索资源对象时,是使用同一个对象副本还是不同的对象,默认x:Share=“True”,因此资源检索得到的是同一个对象。

    x名称空间中的标记扩展:

    x:Type,类型为TypeExtension的标记扩展,用来在XAML中指定Type类型,与C#中的typeof关键字类似。x:Type的默认参数为类型,如{x:Type local:MyWindow}或{x:Type TypeName=local:MyWindow}。

    x:Null,类型为NullExtension的标记扩展,用来在XAML中显示为属性指定Null值,如果在资源字典中定义了Style并把key和TargetType都指定为目标类型,则目标类型的所有标签都默认使用该Style。如果控件不想使用默认Style,则可以为Style指定null,如Style={x:Null}。

    标记扩展除了使用标准的大括号形式使用,还可以使用属性元素的语法声明,如<Button.Style><x:Null /></Button.Style>,显然这种写法太繁琐,但如果使用x:Array标记扩展,则必须使用这种标签形式语法。

    x:Array,类型为ArrayExtension的标记扩展,用来在XAML中声明数组对象,只能使用标签语法,如以下代码片段

                <ListBox>
                    <ListBox.ItemsSource>
                        <x:Array Type="sys:String">
                            <sys:String>String1</sys:String>
                            <sys:String>String2</sys:String>
                            <sys:String>String3</sys:String>
                        </x:Array>
                    </ListBox.ItemsSource>
                </ListBox>

    x:Static,类型为StaticExtension的标记扩展,用来在XAML中引用类的静态字段或静态属性,如Text={x:Static local:Window1.ShowText}。

    XAML指令元素:

    XAML指令元素只有两个,x:Code和x:XData,x:Code用来把C#代码放到XAML中,x:XData用来为数据提供者提供数据,如以下代码片段

        <Page.Resources>
            <XmlDataProvider x:Key="asdf">
                <x:XData>
                    <Root>
                        <Item>Item1</Item>
                        <Item>Item2</Item>
                    </Root>
                </x:XData>
            </XmlDataProvider>
        </Page.Resources>
  • 相关阅读:
    纹理加载和异步
    地板上创建批量小方块
    创建自定义几何体(以立方体为例)
    WTForms
    angular和vue的差别
    vuejs简单介绍特点
    angularjs简单介绍和特点
    flask重要点
    redis
    DRF之认证组件源码解析
  • 原文地址:https://www.cnblogs.com/jefflee/p/5806041.html
Copyright © 2011-2022 走看看