WPF-3:XAML语法

来自《深入浅出WPF》(刘铁猛)读书笔记

XAML使用标签来定义UI元素,每个标签对应.Net Framework类库中的一个控件类。

针对同一个‘看上去一样’的UI布局,XAML代码不一定唯一。

一份XAML文档中除了使用标签声明对象就是初始化对象的属性了。

XAML中为对象属性赋值共有两种语法:使用字符串简单赋值;使用属性元素进行复杂赋值;

通过Attribute=Value语法赋值时,由于XAML的语法限制,Value只可能是一个字符串。

使用TypeConverter类将XAML标签的Attribute与对象的Property进行映射。

属性元素:某个标签的一个元素对应这个标签的一个属性,即以元素的形式来表达一个实例的属性。

标记扩展:是一种特殊的Attribute=Value语法,其特殊的地方在于value字符串是由一对花括号及其括起来的内容组成。XAML编译器会对这样的内容作出解析,生成相应的对象。

只有MarkupExtension类的派生类(直接或间接)才能使用标记扩展语法来创建对象。

标记扩展语法:

    1)属性值不再加引号;

    2)可以嵌套;

    3)具有简写格式;

    4)扩展类的类名均已单词Extension为后缀。


WPF支持在XAML里为对象的事件指定事件处理器,方法是使用事件处理器的函数名为对象的事件Attribute进行赋值:

之所以能实现代码后置功能,是因为.net支持partial类并能将解析XAML所生成的代码与x:Class所指定的类进行合并,需注意:

1)不只是事件处理器,一切用于实现程序逻辑的代码都要放在后置的C#文件中;

2)默认情况下,VS为每个XAML文件生成的后置代码文件名为‘XAML 文件全名,cs’,比如XAML文件名为MyWindow.xaml,那么它的后置代码文件名为MyWindow.XAML.cs,这样做是为了方便文件管理。

有意思的标签:x:Code,使用它可以把本来应该待在后置代码里的C#代码搬到XAML文件里来。x:Code的内容一定要使用XML语言的转义标签。

导入程序集和引用其中的名称空间:

    语法:xmlns:映射名="cls-namespace:类库中名称空间的名字;assembly=类库文件名"

    xmlns是用于在XAML中声明名称空间的Attribute;

    冒号后的映射名是可选的;

    引号中的字符串确定了你要引用的哪个类库以及类库中的哪个名称空间。

    如:...

           

    XAML中引用名称空间的语法与C#不太一样,最大的差异就是XAML需要为被引用的名称空间添加一个映射名,用这个映射名来代表被引用的名称空间。如:using Cmm=Common;

XAML的注释语法亦继承自XML。,但需要注意:

1)注释只能出现在标签的内容区域,即只能出现在开始标签和结束标签之间;

2)注释不能用于注释标签的Attribute;

3)不能嵌套;

你可能感兴趣的:(WPF,WPF)