零起点学习WPF之《WPF揭秘》读书笔记(4)

2.8.3XAML 关键字


XAML语言命名空间(http://schemas.microsoft.com/winfx/2006/xaml)定义了一批XAML解析器和编译器必须特殊处理的关键字。

 

XAML命名空间的关键字,采用习惯性的x作为命名控件的前缀。

关键字

何时有效

含义与描述

x:Class

根元素的特性

为根元素定义一个派生自元素类型的类,也可以在类型前面加上.NET命名空间的前缀。(可选)

x:ClassModifier

根元素的特性,必须与x:Class一起使用

定义由x:Class指定的类的可见性【默认是可见的】。例如C#中的public 和 internal

x:Code

XAML的任何位置元素,但必须与x:Class一起使用

嵌入过程式代码,会被插入由x:Class指定的类中

x:FileModifier

非根元素上的特性,但必须与x:Name(或者等效关键字)一起使用

定义生成的元素【默认是内部元素】字段的可见性。例如C#中的public internal  等等。

x:Key

父元素实现了IDictionary接口

当被添加到父元素的字典中时,请为该项添加键名。

x:Name

非根元素上的特性,但必须与x:Class一起使用

为  给元素生成的字段选择一个名称,这样它就可以在过程式代码中使用了。

x:Shared

Resource-IDictionary对象中的元素特性,但只有在XAML编译后才可使用。

可以被设置为False用来避免多个地方共享资源实例。

x:SubClass

根元素的特性,与x:Class一起使用

为保存XAML内容的x:Class类指定一个子类,可以用.NET命名空间作为可选前缀。(用于那些不支持部分类的语言)

x:TypeArguments

根元素特性,必须与x:Class一起使用

使根类成为泛型,如List<T>,且带有指定的泛型参数实例(如:List<int32>,List<string>),可以设置一个用逗号泛型参数代码清单,如果某种类型不在默认的命名空间里,则需要加上XML命名空间前缀

x:Uid

元素特性

为元素 添加一个本地化的ID

x:Xdata

用于某一个IXmlSerializable类型属性的值的元素。

对XAML解析器透明的任一个XML数据岛

下面这些是XAML中的标记扩展(如System.Windows.MarkUp命名空间中正真的.NET类)【注意表中的每一个类的后缀Extension

标记扩展

含义

x:Array

代表一个.NET数组,x:Array元素的子元素都是数组元素,它必须与x;Type一起使用、用于定义数组类型。

x:Null

表示一个空引用

x:Static

引用在过程式代码中定义的任何一个静态的属性、常量或者枚举值。在XAML编译后这也可以是用一个程序集中的一个非公共成员。如果在默认的命名空间没有该类型,Member字符串必须有XML命名空间前缀。

x;Type

表示System.Type的一个实例就是C#中的typeof操作符。如果在默认的命名空间没有该类型,TypeName字符串必须有XML命名空间前缀。

【小节】
至此,我们可以将XAML语言转化成相应.NET语言(比如:C#),也可以把C#语言转化成XAML。然而、因为类型转换器金额标记扩展是“黑盒”,直接翻译或者是转化是不太可能的。也就是说,如果你不能理解在内部转换是如何进行的也没有关系,因为从过程是代码中直接调用类型转化器也是可选的。(许多拥有对应的类型转化器的类、都会提供一个静态的Parse方法 ,做的都是同样的一件事,这是为了简化过程是代码而加进去的。)



返回导读目录,阅读更多随笔



分割线,以下为博客签名:

软件臭虫情未了
  • 编码一分钟
  • 测试十年功


随笔如有错误或不恰当之处、为希望不误导他人,望大侠们给予批评指正。

原文地址:https://www.cnblogs.com/08shiyan/p/1818212.html