論壇文章
XAML(Extensible Application Markup Language)

緊密結合視窗作業系統   豐富使用者介面

微軟在開發下一代Windows作業系統(.Vista)時,利用Xtensible Avalon Markup Language筋骨w義圖型使用者介面(User Interface)的語言,原本這個語言是專門用來處理圖型介面的API(Avalon架構),後來的發展與演變讓這套語言已不光只是運用在Avalon上,而是延伸到只要有安裝.Vista就可以執行,因此,改稱為"Extensible Application Markup Language",簡稱"XAML",讀音"Zammel"。

陳述式的語言

如前所述,XAML是用來定義使用者介面的一種語言,開發者將描述好的內容利用.Vista中處理圖型介面的API(WPF,Windows Presentation Foundation)解讀,即可呈現出內容中所描述的圖型。也就是說,如果開發者想要畫一個Button,只要寫出下面的code就可以了(如圖一、圖二所示)。

再者,在XAML上描述的使用者介面標籤(Tag)會對應到一個Class,使得XAML不僅可以用來描述UI物件,也可以用來描述該物件的屬性。屬性設定的方式就像在Visual Studio .Net或其他Designer上一樣簡單,選擇屬性設定,就會在該標籤中自動加入屬性,如下圖三所示,在屬性視窗設定Background為Blue,就會在程式中自動加入設定,達到輕鬆設定物件屬性的目的。

當然,XAML也提供程式碼撰寫的功能,開發者只需利用<x:Code>的標籤就能將程式包裝在XAML 裡。例如,圖四、圖五所示,在程式中撰寫一段點選按鈕,就會出現ello WorldT息的效果。

雖然XAML允許與程式包裝在一起。但微軟並不建議這樣做,因為越大型的系統越有必要將UI跟程式分開撰寫,以避免程式設計過於複雜;況且在XAML裡面寫程式,因無法獲得一些工具的協助,(例如Visual Studio .Net 2005),容易對產出造成影響,不但會使該程式成為一個很困難的開發模式,對開發人員而言也將是一大挑戰,這樣就會回到以前使用文字編輯器開發程式的模式,因開發者需要自己查函數,無形中就會增加程式開發的時間與困難度。

圖文並茂的多媒體圖形輕鬆展現

XAML理念並非微軟獨創,早在XAML問世之前,Mozilla組織訂定XUL與MacromediaR公司產品Flex中都有著相同的概念。但由於XAML與視窗作業系統緊密結合,因此得以融合需要高效能運算的3D動畫能力,藉此展現出極為驚人的視覺效果。另外,由於微軟封裝了DirectX、Direct3D等高速繪圖介面,因而可以輕鬆展現具備3D效果的使用者介面,透過XAML將3D物件自由移動、旋轉,或隨意改變光源位置與強弱,非常適合展現圖文並茂的多媒體內容,以及提供極為炫目的使用者介面。

XAML又與另一種描述圖形的語言SVG(Scalable Vector Graphics)有所不同,根據W3C對SVG下的定義,XAML是以XML為基底可以畫出二維圖形的語言。但是XAML不僅能畫出二維圖形,還可以畫出3D圖形及Window的控制項。上圖即為XAML官方網站DEMO的圖片。

結論

透過XAML的幫助,Windows的使用者介面將變得更加豐富。不過,強調效率的遊戲軟體、3D動畫軟體、電腦輔助設計軟體(CAD)仍會繼續使用低階繪圖的API語言進行開發。以往的專案都是使用Visual Studio .Net做為拉畫面與撰寫功能的程式,若能充分利用XAML的特性,就能事先將畫面產出,再交給程式設計師進行功能撰寫。雖然XAML目前多使用在Window 平台,不過微軟希望未來能利用XAML這種陳述式的特性,在其他平台安裝相關軟體就可以在其平台上執行了。