複製鏈接
請複製以下鏈接發送給好友

XAML

鎖定
XAML是eXtensible Application Markup Language的英文縮寫,相應的中文名稱為可擴展應用程序標記語言,它是微軟公司為構建應用程序用户界面而創建的一種新的描述性語言。XAML提供了一種便於擴展和定位的語法來定義和程序邏輯分離的用户界面,而這種實現方式和ASP.NET中的代碼後置模型非常類似。XAML是一種解析性的語言,儘管它也可以被編譯。它的優點是簡化編程式上的用户創建過程,應用時要添加代碼和配置等。
中文名
可擴展應用程序標記語言
外文名
eXtensible Application Markup Language
縮    寫
XAML
優    點
簡化編程式上的用户創建過程

XAML簡介

也就是説在開發一個應用程序時,我們可以將開發工作分成開發人員和設計人員兩個團體分別進行,各自負責後台程序代碼邏輯和前台程序界面的設計,這樣就使得開發人員和設計人員之間的協作更通暢,也極大地發揮了他們的專長。
XAML的發音為"Zamel"。雖然XAML包含了許多新規則、元素和語法,但是我並不認為學習它是一個折磨人的過程。只要讀者稍微具備一些HTML基礎知識,就可以快速地掌握XAML中的大部分內容。

XAML優點

XAML簡化了.Net Framework 3.0編程模式上的用户界面創建過程,使用XAML開發人員可以對WPF程序的所有用户界面元素(例如文本、按鈕、圖像和列表框等)進行詳細的定置,同時還可以對整個界面進行合理化的佈局,這與使用HTML非常相似。但是由於XAML是基於XML的,所以它本身就是一個組織良好的XML文檔,而且相對於HTML,它的語法更嚴謹、更明確。預計以後大部分的XAML都可由相應的軟件自動生成,就如同我們現在製作一個靜態頁面時,幾乎不用編寫任何HTML代碼就可以直接通過Dreamweaver軟件生成一個美觀的頁面。但是最初通過手動編寫XAML代碼將是一次絕佳的學習體驗,雖然實現的過程繁雜了些,但是將加深您對XAML語法和各個元素的理解。
大多數的WPF程序可能同時包含程序代碼和 XAML。我們可以使用XAML定義應用程序的初始界面,而後才編寫相應的功能實現代碼。我們可以將邏輯代碼直接嵌入到一個XAML文件中,也可以將它保留在一個單獨的文件中。實際上,能夠用XAML實現的所有功能我們都可以使用程序代碼來完成。因此,我們根本無需使用任何的XAML就可以創建一個完好的WPF程序。一般來説,程序代碼的優勢在於流程處理和邏輯判斷,而不是界面的構建上。而XAML則是集中關注於界面的編程,我們可以將它和其它的.NET語言配合使用,從而構建出一個功能完善、界面美觀的WPF程序。XAML是一種純正的、用來描述用户界面構成元件和編排方式的標記語言。儘管有部分的XAML語法具備程序設計語言的特性(例如XAML中的Trigger和TRansform),但是XAML並不是一種用於程序設計的語言,它的功能也不是為了執行應用程序邏輯。
微軟推薦XAML被編譯成BAML(Binary Application Markup Language-二進制語言程序標記語言)。XAML和BAML都可以被WPF解析,並且將以一種和HTML相似的方式進行界面的呈現。但是和HTML不同的是,XAML是強類型化的。也就是説,HTML會忽略那些它不能識別的元素和屬性,而XAML必須在識別所有的元素和屬性的情況下,才對頁面進行呈現。儘管在XAML中各個屬性都是以一個個的字符串(例如Background)表示的,但是這些字符串實際上代表的是WPF中的對象,只有被WPF識別的對象才可以作為元素的屬性,所以我們説XAML是強類型化的。

XAML新功能

微軟Build 2013發佈了一些已經被添加到Windows 8.1中的XAML新功能。 [1] 
  • Hub控件
  • 命令欄
  • 彈出(Flyout)控件
  • 日期/時間選擇控件
  • 取消StandardStyles.xaml

XAML不是HTML

還有一點是我們反覆強調的,XAML並不是HTML。儘管XAML在元素的聲明、程序樣式的設置和指定事件處理程序上都和HTML非常類似,但是XAML是基於XML的,它是WPF的外在表現形式。而HTML只是一種標記語言,僅僅是用來為瀏覽器呈現頁面內容。XAML除了用來呈現信息和請求用户輸入等基本的功能外,它還包含了一些高級的特性,例如它提供了對動畫和3D眾多方面的支持。
XAML是可擴展的,正如它的名字指明的那樣。開發人員可以創建自定義的控件、元素和函數來擴展XAML。而且由於XAML各元素在本質上就是WPF類的映射,所以開發人員可以很輕鬆地使用面嚮對象的技術對XAML元素進行擴展。也就是説我們可以開發一些自定義控件和組合元素,並將它公開給用户界面設計人員和其它的開發人員使用。
XAML、Windows Presentation Foundation 和Microsoft .NET Framework3.0 XAML 是 Microsoft ® Windows Presentation Foundation (WPF) 的一部分。WPF 是 Microsoft® .NET Framework 3.0 中處理基於 Windows 的應用程序或基於 Web瀏覽器的客户端應用程序的可視外觀的一類功能。基於 WPF 的應用程序可以在 Windows Vista上運行,也可以在安裝了 Microsoft .NET Framework 3.0(如果是基於 Web 瀏覽器的客户端應用程序,還需要安裝Internet Explorer 7.0)的早期版本的 Windows 上運行。

XAML應用

WPF 藉助 XAML 來利用標記而不是編程語言(如 C#)來構造精美逼真的用户界面 (UI)。您可以通過定義控件、文本、圖像、形狀、動畫等各種元素,完全採用 XAML 來製作詳盡的 UI 文檔。由於 XAML 是聲明性語言(類似於 HTML),因此如果需要嚮應用程序中添加運行時邏輯,則需要添加代碼。例如,如果應用程序僅使用 XAML,您不僅可以創建並動態顯示 UI 元素,還可以對這些元素加以配置令其以受限方式響應用户輸入(通過使用事件觸發器)。但是,在不添加代碼的情況下,該應用程序將不能執行和響應計算,也不能自行創建新的 UI 元素。XAML應用程序的代碼存儲在不同於 XAML 文檔的單獨文件中。這種將 UI 設計與基礎代碼相脱離的方式,使得開發人員和設計人員能夠更加密切地合作完成同一個項目,而不會延誤各自的進度。

XAML作用

Silverlight體系結構和 Silverlight 應用程序開發過程中,XAML 發揮着多種重要作用:
1、XAML 是用於聲明 Silverlight UI 及該 UI 中元素的主要格式。通常,項目中至少有一個 XAML 文件表示應用程序中用於最初顯示的 UI 的"頁面"比喻。其他 XAML 文件可能聲明其他用於導航 UI 或模式替換 UI 的頁。另外一些 XAML 文件可以聲明資源,如模板或其他可以重用或替換的應用程序元素。
2、XAML 是用於聲明樣式和模板的格式,這些樣式和模板應用於 Silverlight 控件和 UI 的邏輯基礎。您可以執行此操作來模板化現有控件,或作為為控件提供默認模板的控件作者來執行此操作。
3、XAML 是用於為創建 Silverlight UI 和在不同設計器應用程序之間交換 UI 設計提供設計器支持的常見格式。最值得注意的是,Silverlight 應用程序的 XAML 可在 Expression Blend 產品與Visual Studio之間互換。
4、WPF 還在 XAML 中定義其 UI。就與 WPF XAML 的關係而言,Silverlight XAML 使用共享的默認 XAML 命名空間,且對於其 XAML 詞彙具有近似的WPF子集關係。因此,XAML 為 UI 在 Silverlight 與 WPF 之間遷移提供了一種有效途徑,這樣,您就可以針對 Silverlight 執行 UI 設計,然後幾乎無需重新設計 UI 圖面即可將此相同設計遷移到 WPF。
5、Silverlight XAML 定義 UI 的可視外觀,而關聯的代碼隱藏文件定義邏輯。可以對 UI 設計進行調整,而不必更改代碼隱藏中的邏輯。就此作用而言,XAML 簡化了負責主要可視化設計的人員與負責應用程序邏輯和信息設計的人員之間的工作流
6、由於支持可視化設計器和設計圖面,因此,XAML 支持在早期開發階段快速構造 UI 原型,並在整個開發過程中使設計的組成元素更可能保留為代碼訪問點,即使可視化設計發生了巨大變化也不例外。
根據您自己在開發過程中所扮演的角色,您可能無法廣泛地與 XAML 語言或 XAML 語法交互。您與 Silverlight XAML 交互的程度還取決於您所使用的開發環境、是否使用交互式設計環境功能(如工具箱和屬性編輯器)以及 Silverlight 應用程序的範圍和目的。儘管如此,在開發 Silverlight 應用程序的過程中,您還是可能能夠使用基於文本的編輯器在元素級編輯 Silverlight XAML 文件。本主題旨在使您瞭解 XAML 語言和 XAML 語法的具體信息。此外,本主題還着重介紹 XAML 可能特定於 Silverlight 的用法和行為的某些方面(與其他利用 XAML 的框架(如 WPF 或 WCF)相對照)。使用此信息,您應能夠放心地以文本表示形式編輯用於 Silverlight 的 XAML,當此 XAML 文件由工具、標記編譯操作或 Silverlight 運行時加載應用程序使用時,保持其聲明和目的的有效性

XAML代碼

在 Expression Blend 中,任何給定文檔的 XAML 均存儲在 .xaml 文件中。如果 XAML 文檔有相應的基礎代碼,該代碼將存儲在文件名相同但另行添加 .cs 或 .vb 擴展名的文件中。例如,如果 XAML 文檔名為“Window1.xaml”,則當代碼的編程語言為 C# 時,代碼隱藏文件名為“Window1.xaml.cs”。
在生成項目時,WPF分析程序將讀取該項目的 .xaml 文件,並報告所產生的任何錯誤。同樣地,在 Expression Blend 中打開現有項目時,分析程序將讀取項目文件夾中包含的 .xaml 文件,嘗試分析元素並在“設計”視圖中的美工板上顯示文檔。在這兩種情況下,如果分析程序遇到錯誤,將禁用美工板,並且 Expression Blend 將顯示一則錯誤消息,其中包含用於打開“XAML”視圖的鏈接,以便您糾正該錯誤。分析錯誤也會報告在“結果”面板中的“錯誤”選項卡上。

XAML均衡作用

您可以從 Microsoft ® Expression ® Design 中將美術資源導出為 XAML,然後將該 XAML 作為資源導入到 Expression Blend 中,以便在 Expression Blend 項目中利用這些資源。其他一些設計應用程序也提供了各種將美術資源轉換為 XAML 的工具。您可以在 Internet 上搜索受信任的站點所發佈的轉換工具。
參考資料