UWP基础教程 - XAML对象元素和属性

元素

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中,属性也是可以使用多种语法来进行设置的,不同的属性类型也有不同的设置方式,并不是所有的属性设置都是通用的。总的来说,可以通过下面的三种方式来设置对象属性。

  • 使用Attribute特性语法
  • 使用Property元素语法
  • 使用隐式对象语法

这三种设置属性的方法,并不是对所有属性都适用的,有些属性只适用一种方式来设置;有些熟悉则可以使用多种方式来设置,这取决于属性对象的特性。下面我会详细的介绍这三种设置方法。

1、使用Attribute特性语法

<元素对象 属性名=“属性值” 属性名=“属性值” …></元素对象> 

或者

<元素对象 属性名=“属性值” 属性名=“属性值” …/>

下面来看一个具体的实例

<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);

2、使用Property元素语法

使用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特性要灵活和强大。

3、使用隐式对象语法

通过学习Property属性元素,可以了解到XAML的元素对象属性,不仅包含单一对象属性,同时还支持复杂属性,属性值可以为简单的字符数据类型,同时也可以是一个数据集。 为了简化XAML代码复杂性,提高代码易读性,XAML提供隐式数据集设置对象属性方法。上面设置Button的Content属性还可以这样写:

        <Button>
            <TextBlock Text="陈仁松XAML教程"/>
        </Button>

或者

        <Button>
            陈仁松XAML教程
        </Button>

从对比以上代码可以看出<Button.Content>被删除后,仍旧可以对Content进行赋值操作。其运行结果和使用Property属性元素属性赋值相同,使用隐式对象语法属性赋值在Windows 10 UWP自定义控件模板和样式中经常用到,是常用属性赋值方法之一。

本篇就介绍到这里,下一篇将会给大家介绍XAML依赖属性和附加属性。