技术开发 频道

WPF循序渐进:XAML入门


2.XAML示例回顾

    首先,回顾一下上一篇文章中示例所使用的XAML代码:
<Window x:Class="HelloWpf.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<Button Margin="101,114,102,125" Name="btn1" Click="btn1_Click">请单击按钮</Button>
</Grid>
</Window>
    以上代码呈现为一个包括按钮控件的窗口。代码中包括三个元素:(1)处于顶层的Window元素,它呈现为整个窗口;

    (2)Grid元素用于实现布局,其中可放置任何控件;(3)Button元素表示按钮控件。

    虽然这些代码很简单,但是包含了XAML的多个核心概念,例如基本语法规则、<Window>及其他根元素、命名空间和Code-Behind类,属性和事件等。

    3 基本语法规则

    如前文所述,XAML是基于XML的,格式组织良好的标记语言。因此,在编写XAML代码时必须遵循以下几个原则,这样才能够尽可能的少犯错误。

    XAML是大小写区分的,元素和属性的名称必须一个严格区分大小写。例如,以上述代码中的Button而言,开发人员必须将其声明为<Button>,而不能使<button>。

    所有的属性值,无论它是什么数据类型,都必须包含在双引号中。

    所有的元素都必须自我封闭。自我封闭可采取两种方式:(1)一个起始标记和一个结束标记,例如<Button>...</Button>。

    (2)起始和结束标记在一个标记中,例如<Button ... />。

    最终的XAML代码文件必须符合XML文档要求。XML文档要求比较严格,例如,元素不能重叠交叉,必须成对出现,缩进量要规范等。
 
4 <Window>及其他根元素

    如上代码文档所示,在XAML中包括很多描述用户界面的元素。通常情况下,这些元素都必须包含在根元素中,例如以上代码中的<Window>就是一个最为常见的根元素。根元素是用于包含所有用户界面元素的基本容器,每个XAML文件代码必须包含一个根元素,每个根元素下可包含一个根元素或者多个XAML元素(称为根元素的子元素)。除此之外,开发人员也可以根据业务需求,采用继承扩展根元素对应类(例如,<Window>元素对应的是System.Windows.Window类)。

    开发人员常用的根元素包括Window、Page、StackPanel、Canvas、Grid等。下面简单介绍一下这些根元素:
    <Window>元素
    该元素对应的是System.Windows.Window类,其呈现为与用户交互的,最常用的标准窗口。使用该元素呈现的窗口显示了客户区域、最大化最小化关闭按钮、图标、系统菜单、边框等。

    <Page>元素
    该元素对应的是System.Windows.Controls.Page类,其封装了一个可实现导航的内容页,该内容页可宿主在Window、NavigationWindow、Frame、UserControl等对象中。该元素对应的基类是System.Windows.Controls.Panel。

    <StackPanel>元素
    该元素对应的是System.Windows.Controls.StackPanel类,其能够将子元素置于可垂直或者水平排列的单行中。与<StackPanel>类似的还有<DockPanel>、<TabPanel>、<WrapPanel>等元素,它们的基类都是System.Windows.Controls.Panel。

    <Canvas>元素
    该元素对应的是System.Windows.Controls.Canvas类,其定义了一个可使用相对坐标(相对于Canvas定义的区域)显式定位子元素的区域,例如使用属性Top、Left、Bottom、Right。该元素对应的基类是System.Windows.Controls.Panel。

    <Grid>元素
    该元素对应的是System.Windows.Controls.Grid类,其允许开发人员自定义一个包括行和列的表格区域。接着,可在单元格中放入其他子元素。该元素对应的基类是System.Windows.Controls.Panel。

    通常情况下,在使用根元素时,必须引用适当的命名空间。在下面一节中将介绍有关命名空间的知识。
0
相关文章