上节,我们已经搭建了他的开发环境,这节,我们对UI层大一统的技术——XAML技术进行一个概览。
先来搞清楚什么是XAML?所谓XAML是eXtensible Application Markup Language的英文缩写,相应的中文名称为可扩展应用程序标记语言,它是微软公司为构建应用程序用户界面而创建的一种新的描述性语言. 特别提醒,xaml中含有ML两个字,因此可以看出来他属于ML(mark Language)家族,这里有必要揭秘一下他的前世今生。
在xaml出现之前,微软技术的使用者曾经遇到过以下几个难题。
①在开发一个应用程序时,开发工作开发人员和设计人员两个团体同时进行时候,负责后台程序代码逻辑和前台程序界面的设计要混淆在一起,这样就使得开发人员和设计人员之间的协作十分的不通畅,抑制发挥了他们各自的专长,大大的降低了开发效率。
②在做普通的winform程序时候,我们要做一个很炫的按钮,比如对按钮进行了旋转,扭曲,除非美工给力,否则十分的麻烦。
③我们做web的程序的时候,做许多动态,渲染的效果,没辙,我们只有需要flash帮助,则似乎加大开发人员的学习成本。
于是,在这大环境下,xaml技术在千呼万唤中始出来. 2006年, xaml是伴随着wpf(Windows Presentation Foundation), WPF相对于Windows客户端的开发来说,向前跨出了巨大的一步,它提供了超丰富的.NET UI 框架,集成了矢量图形,丰富的流动文字支持flow text support,3D视觉效果和强大无比的控件模型框架。在wpf做界面上取得巨大的成功的同时,对设计人员来说,那xaml语言类似与html的风格,几乎不用花任何的学习的成本,这样子设计人员工作效率大大的提高。同时在开发一个应用程序时,开发工作开发人员和设计人员两个团体同时进行时候,负责后台程序代码逻辑和前台程序界面的设计完全分离,这样就使得开发人员和设计人员之间的协作十分通畅,极大发挥了他们各自的专长,大大提高了开发效率,缩短了开发的周期。
后来,微软又推出了一个对抗flash的利器——silverlight技术,也是将xaml语言作为UI设计的语言,随着nbc用silverlight在做2008年的奥运会的网站上的默认播放器的巨大的成功,人们见识到了xaml语言在处理网页程序的富客户端的能力的强大。
微软在智能手机端,深深的体会一般是他的对手所感到的压力从摇摇领先到大幅度落后。于是,到了2010年,微软推出了一个全新的手机的操作系统——windows phone7 ,他与windows mobile有本质的区别。最脱胎换骨的区别, 是metro UI应用, 对我们.net人员来说,又是巨大的福音。这也是xaml语言一个巨大的胜利。
win8操作系统出现,主要是针对平板电脑的操作系统,于是,写metro app UI的层技术,顺理成章的,也是xaml技术。
我们看wpf,silverlight,wp,win8相应xaml类库所对应的关系:
从这个图中,我们能够清晰的看到以下的关系:
①wpf所支持的xaml的类库是最完全的,而像silverlight,silverlight是他的子集。②silverlight所支持的类库其次,wp中的xaml,win8中的xaml都是他的子集。③ wp与win8中的xaml ,互有交际,例如像微软为了极大的提高的GPU效率,把RadialGrenditBrush(渐变笔刷)在win8就不支持。像win8支持的PropertyPath,在wp不支持。
以上都是一些理论,下面我们遵循程序界最常见的原则——WYSIWYG(所见即所得(what you see is what you get))原则,通过一个小例子来展示xaml是通用的。
这个小例子,就是让按钮旋转30°。 相应源代码如下:
<Button Content="Button" HorizontalAlignment="Left" Margin="71,94,0,0" VerticalAlignment="Top" Width="75">
<Button.RenderTransform>
<RotateTransform Angle="-30"/>
</Button.RenderTransform>
</Button>
在wpf中,我拷贝上述的源代码。运行效果如下:
在silverlight中,我拷贝上述的源代码。运行效果如下:
在wp系列中,我拷贝上述的源代码。运行效果如下:
在win8中,我拷贝上述的源代码。运行效果如下:
怎么样,我的一行源代码 搞定微软4个不同的平台,微软的xaml是真的niubility,哪些骂微软sb的人,请您猩猩吧!其实,微软的所有UI技术,学好xaml,走遍天下都不怕。
这就是对xaml的基本介绍。