上節,我們已經搭建了他的開發環境,這節,我們對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的基本介紹。