XAML的对象元素是指XAML中一个完整的节点,一个XAML文件始终只有一个根元素,在Windows 10 UWP 应用中通常是采用Page作为根元素,这个根元素就是当前页面最顶层的元素,而其他元素都是子元素。在XAML中根元素有且只能有一个,而子元素可以有一个或者多个,这是由根元素来决定的。 在XAML代码中,一个Element(元素)通常是一个Object(对象),在代码中映射对应.Net类。简单理解,在XAML中声明一个Element元素,其实就是对相应公共语言运行类库进行一次实例化操作。 XAML代码声明一个元素对象,必须由一个开始标签“”和一个结束标签“”构成,基本语法如下:
<Element></Element>
或者你也可以这么来写
<Element/>
该语法格式省略</元素对象>
结束标签,使用“/”符号作为元素结束符。
值得注意的是,XAML中Elements(元素)和Attributes(特性)名称是字符大小写敏感型,也就是大写和小写字符命名具有不同的含义。在上述代码中,如果使用<element>
,XAML语法解析器将返回错误信息,无法对Element元素进行实例化。
在XAML中,属性也是可以使用多种语法来进行设置的,不同的属性类型也有不同的设置方式,并不是所有的属性设置都是通用的。总的来说,可以通过下面的三种方式来设置对象属性。
这三种设置属性的方法,并不是对所有属性都适用的,有些属性只适用一种方式来设置;有些熟悉则可以使用多种方式来设置,这取决于属性对象的特性。下面我会详细的介绍这三种设置方法。
<元素对象 属性名=“属性值” 属性名=“属性值” …></元素对象>
或者
<元素对象 属性名=“属性值” 属性名=“属性值” …/>
下面来看一个具体的实例
<Rectange x:Name="rectange" Width="100" Height="100" Fill="Red" />
由于元素对象属性名在开始标签内部,所以这种表达方式也被称为“内联属性”。
XAML分析器会把上面的代码解析成为C#的类,当然也可以直接使用C#的代码来实现元素和属性设置,下面来看看上面这个例子的C#代码实现
Rectange r = new Rectange();
r.Name = "rectange";
r.Width = 100.0;
r.Height = 100.0;
r.Fill = new SoildColorBrush(Colors.Red);
使用XAML的Attribute特性可以简单快捷的设置对象的属性,其属性值局限于简单的字符形式。在实际项目中,经常会遇到复合型控件或者自定义控件引用较为复杂的对象属性,以达到个性化的效果。对此Attribute特性无法支持,从而引入Property属性元素的概念。 下面用伪代码来表示使用Property元素语法来实现属性的设置
<元素对象>
<元素对象.属性>
<属性设置器 属性值=“”>
</元素对象.属性>
</元素对象>
其中,属性设置器可以设置为较为复杂的对象元素,例如布局控件元素,自定义控件元素等。 下面是用一个矩形控件演示Property属性的作用,设置矩形的填充使用Fill属性,使用Attribute特性设置上面的Rectange的内容,如下代码:
<Rectange x:Name="rectange" Width="100" Height="100">
<Rectange.Fill>
<SoildColorBrush Color = "Red"/>
</Rectange.Fill>
</Rectange>
再来看一个Button中添加一个文字
<Button>
<Button.Content>
<TextBlock Text="陈仁松XAML教程"/>
</Button.Content>
</Button>
还可以这么写
<Button>
<Button.Content>
陈仁松XAML教程
</Button.Content>
</Button>
其运行效果和Attribute特性设置按钮内容相同。从示例中可以看出,使用元素对象的Property属性设置方法,比Attribute特性要灵活和强大。
通过学习Property属性元素,可以了解到XAML的元素对象属性,不仅包含单一对象属性,同时还支持复杂属性,属性值可以为简单的字符数据类型,同时也可以是一个数据集。 为了简化XAML代码复杂性,提高代码易读性,XAML提供隐式数据集设置对象属性方法。上面设置Button的Content属性还可以这样写:
<Button>
<TextBlock Text="陈仁松XAML教程"/>
</Button>
或者
<Button>
陈仁松XAML教程
</Button>
从对比以上代码可以看出<Button.Content>被删除后,仍旧可以对Content进行赋值操作。其运行结果和使用Property属性元素属性赋值相同,使用隐式对象语法属性赋值在Windows 10 UWP自定义控件模板和样式中经常用到,是常用属性赋值方法之一。
本篇就介绍到这里,下一篇将会给大家介绍XAML依赖属性和附加属性。