首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

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设计指南指出:类应该允许以任何顺序设置属性,添加事件处理程序也是如此。