XAML的优势
如同XUL(eXtensible User-
interface Language-可扩展用户界面语言)、HTML和FELX等用来创建具有丰富动态特性用户界面的标记语言一样,XAML也采用了上述语言类似实现的机制。这些标记语言都具备快速构建一个程序界面且较容易修改界面布局的特性。除此之外,使用它们构建一个用户界面的布局时的代码要比使用传统的编程语言实现少的多。例如我们可以在XAML中只使用一行代码就可以创建一个Button对象,并且设置了Button相应的属性和事件,代码如下:
<Button Click="OnClickHandler" Background="Green" Content="Submit" /> |
如果要采用C#或VB.NET来构建和上述相同的Button对象时,你需要编写如下的代码:
Button myBtn = new Button(); myBtn.Background = Brushes.Green; myBtn.Text="Submit"; myBtn.Click += new System.EventHandler(OnClickHandler); |
提示:如果你完全使用程序代码来实现WPF程序的话,那么可以使用兼容的.NET语言来创建呈现的布局和应用程序逻辑。但是如果应用程序使用了XAML进行描述的话,那么应用程序逻辑必须使用C#和VB.NET来编写,其他的.NET语言现在还不被支持。
对于一些具有.Net Windows Froms和Web Form编程经验的开发人员来说,使用C#语言构建一个Button对象是非常容易的。但是如果构建的用户界面包含很多的类似界面对象时,那么其实现的过程还是那么轻松吗?很显然这样做是非常繁杂的,即不直观也不现实。
在上面的那几个标记语言中,HTML缺乏编程的功能以及对应的控件,它的惟一用途就是对页面文档进行编排。如果你要添加一些交互的功能(例如提示用户的输入信息错误),则必须通过javascript脚本语言来编写相应的逻辑。为了解决HTML存在的问题,XAML和其它新一代的声明性标记语言,都提供了后端的语言支持。虽然XAML将用户界面从应用逻辑中分离了出来,但是在WPF中依然提供了一个良好的机制使得它们可以相互作用和影响。这种分离具备很多好处,这其中包括设计人员可以更加容易地构建程序界面,而且程序开发人员在修改逻辑代码时,对前台的界面没有丝毫的影响,反之亦然。
在制作网页时,通常都会有专门的美工人员使用Dreamweaver等软件来设计页面的编排和站点的整体样式。为此,对于那些使用过HTML或其它标记语言的Web页面设计人员来说,XAML对他们来说是非常简单和直观的。他们仅需花费少许的时间和精力学习,就可以直接跳转到XAML上进行WPF程序的界面设计。这样也就减轻了.NET开发人员的负担,使得他们可以完全专注于应用程序逻辑的设计上。
通常我们在设计页面的编排时,一般是用Adobe公司的Dreamweaver软件。它提供了一种便捷的方式来设计和编排页面,并自动生成对应的HTML代码。目前为止,微软也提供了一个处于测试阶段的Interactive Designer,使用它我们可以快速地创建一个WPF程序,而且以一种可视化的操作方式对XAML页面进行设计和编排,它会自动生成相应的XAML代码。除此之外,我们还可以使用其它的一些第三方工具进行XAML的开发。相信到Vista正式分布后,将会越来越多的工具支持XAML开发。
XAML是可扩展的,正如它的名字指明的那样。开发人员可以创建自定义的控件、元素和函数来扩展XAML。而且由于XAML各元素在本质上就是WPF类的映射,所以开发人员可以很轻松地使用面向对象的技术对XAML元素进行扩展。也就是说我们可以开发一些自定义控件和组合元素,并将它公开给用户界面设计人员和其它的开发人员使用。
XAML是一种纯正的、用来描述用户界面构成元件和编排方式的标记语言。尽管有部分的XAML语法具备程序设计语言的特性(例如XAML中的Trigger和TRansform),但是XAML并不是一种用于程序设计的语言,它的功能也不是为了执行应用程序逻辑。
XAML是一种解析性的语言,尽管它也可以被编译。微软推荐XAML被编译成BAML(Binary Application Markup Language-二进制语言程序标记语言)。XAML和BAML都可以被WPF解析,并且将以一种和HTML相似的方式进行界面的呈现。但是和HTML不同的是,XAML是强类型化的。也就是说,HTML会忽略那些它不能识别的元素和属性,而XAML必须在识别所有的元素和属性的情况下,才对页面进行呈现。尽管在XAML中各个属性都是以一个个的字符串(例如Background)表示的,但是这些字符串实际上代表的是WPF中的对象,只有被WPF识别的对象才可以作为元素的属性,所有我们说XAML是强类型化的。
还有一点是我们反复强调的,XAML并不是HTML。尽管XAML在元素的声明、程序样式的设置和指定事件处理程序上都和HTML非常类似,但是XAML是基于XML的,它是WPF的外在表现形式。而HTML主是一种标记语言,仅仅是用来为浏览器呈现页面内容。XAML除了用来呈现信息和请求用户输入等基本的功能外,它还包含了一些高级的特性,例如它提供了对动画和3D众多方面的支持。
查看本文来源