2.2 元素和特性
XAML规范定义了一些规则,用于把.NET命名空间、类型、属性和事件映射为XML命名空间、元素和特性。可以看一下下面简单(但是完整)的XAML文件,它定义了一个WPF按钮,跟另一段与之功能一致的C#代码比较一下:

虽然这两段代码功能是相同的,但你可以很快地在IE浏览器中查看XAML,还会看到一个活生生的按钮放在浏览器窗口中,如图2-1所示,而C#代码则必须要用额外的代码编译方可使用。
在XAML中定义一个XML元素(叫作对象元素)与在.NET中实例化一个对应的对象(总是使用默认的构造函数)是等价的。设置对象元素的一个特性(attribute),与设置一个同名属性(property attribute,称为属性特性)或者为一个同名事件设置一个事件处理程序(也称为事件特性),也是等价的。例如,这里对那个Button进行了更新,不仅设置了Content属性,也为其Click事件添加了一个事件处理程序。

图2-1 在.xaml文件中声明一个简单的WPF按钮

这就需要使用适当的签名定义一个叫作button_Click的方法,这也意味着XAML文件无法像图2-1那样独立呈现。本章最后的2.8节将解释如何使用需要额外代码的XAML。注意,XAML和C#一样,也是区分大小写的。
属性和事件处理的顺序
在运行时(run-time)模式下,为任何一个XAML声明的对象设置属性之前,总要添加一些事件处理程序(除了本章最后所讲到的Name属性外,该属性在对象构建之后立即被设置),这样就可以让某个事件在属性被设置时被触发,而不用担心XAML使用特性的顺序。
至于多个属性集或添加多个事件处理程序,它们总会遵照一定的顺序,即属性特性和事件特性是在对象元素中指定的。值得庆幸的是,这一排序方式不会在实际应用中产生影响,因为.NET设计指南指出:类应该允许以任何顺序设置属性,添加事件处理程序也是如此。





