XAML(Extensible Application Markup Language的簡寫,發音為“zammel”)是用于實體化.NET物件的標記語言,盡管XAML是一種應用于諸多不同問題領域的技術,但其主要作用是構造WPF用戶界面,換言之,XAML檔案定義了在WPF應用程式中組成視窗的面板、按鈕以及各種空間的布局,
一、XAML變體
實際上術語“XAML”有多種含義,到目前為止,我們使用XAML標識整個XAML語言,它是一種基于通用XML語法、專門用于表示一顆.NET物件樹的語言(這些物件可以是視窗中的按鈕、文本框,或是已經定義好的自定義類,)
XAML還包含如下幾種:
- WPF XAML包含描述WPF內容的元素,如矢量圖形、控制元件以及檔案,目前,它是最重要的XAML應用,
- XPS XAML是WPFXAML的一部分,它為格式化的電子檔案定義了一種XML標識方式,XPS XAML已作為單獨的XML頁面規范(XML Paper Specification ,XPS)標準發布,
- Silverlight XAML是一個用于Microsoft Silverlight應用程式的WPF XAML子集,Silverlight是一個跨平臺的瀏覽器插件,通過它可創建具有二維圖形、影片、音頻和視頻的富Web內容,
- WF XAML包含描述WF(work Flow,作業流)內容的元素,
二、XAML基礎
一旦理解了一些基礎規則,XAML標準是非常簡單的:
- XAML 檔案中的每個元素都映射為.NET類的一個實體,元素的名稱也完全對應于類名,例如,元素<Button>指示WPF創建的Button物件,
- 與所有XML檔案一樣,可以在一個元素中嵌套另一個元素,但嵌套通常是一種表示“包含”的方法——換句話說,如果在一個Grid元素中發現一個Button元素,那么用戶界面可能包括一個在其內部包含的一個Button元素的Grid元素,
- 可通過特性(attribute)設定每個類的屬性(property),但在某些情況下,特性不足以完成這項作業,對于此類情況,需要通過特殊的語法使用嵌套的標簽(tag),
使用VS2012創建一個WPF專案,默認生成主表單的XAML代碼如下所示:
1 <Window x:Class="WpfApplication1.MainWindow"2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"4 Title="MainWindow" Height="350" Width="525">5 <Grid>6 7 </Grid>8 </Window>
該檔案僅包含兩個元素——頂級的Window元素以及一個Grid元素,Window元素代表整個視窗,在Grid元素中可以放置所有控制元件,盡管可以使用任何頂級元素,但是WPF應用程式只使用以下幾個元素作為頂級元素:
- Window元素
- Page元素(該元素和Window元素類似,但它用于可導航的應用程式)
- Application元素(該元素定義應用程式資源和啟動設定)
與在所有XML檔案中一樣,在XAML檔案中只能有一個頂級元素,在上例中,意味使用</Window>標簽關閉了Window元素,檔案就結束了,
2.1、XAML名稱空間
XAML決議器需要知道類位于哪個.NET名稱空間,例如,在許多名稱空間中可能都有Window類——Windowm類可能是指System.Windows.Window類,也可能是指位于第三方組件中的Window類,為了弄清實際上希望使用哪個類,XAML決議器會檢查應用于元素的XML名稱空間,
上面顯示的示例檔案定義了兩個名稱空間:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns特性是XML中的一個特殊特性,它專門用來宣告名稱空間,這段標記宣告了兩個名稱空間,在創建的所有WPF XAML檔案中都會使用這兩個名稱空間:
- http://schemas.microsoft.com/winfx/2006/xaml/presentation是WPF核心名稱空間,它包含了所有WPF類,包括用來構建用戶界面的控制元件,在該例中,該名稱空間的宣告沒有使用名稱空間前綴,所以它成為整個檔案的默認名稱空間,換句話說,除非另外指明,每個元素自動位于這個名稱空間,
- http://schemas.microsoft.com/winfx/2006/xaml 是XAML名稱空間,它包含各種XAML使用特性,這些特性可影響檔案的解釋方式,該名稱空間被映射為前綴x,這意味著可通過在元素名稱之前放置名稱空間前綴x來使用該名稱空間(例如<x:ElementName>),
2.2 代碼隱藏類
可通過XAML構造用戶界面,但為了使應用程式具有一定的功能,就需要用于連接包含應用程式代碼的事件處理程式的方法,XAML通過使用如下所示的Class特性簡化了這個問題:
<Window x:Class="WpfApplication1.MainWindow">
在XAML名稱空間的Class特性之前放置了名稱空間前綴x,意味著這是XAML語言中更通用的部分,實際上,Class特性告訴XAML決議器用指定的名稱生成一個新類,該類繼承自由XML元素命名的類,換句話說,該實體創建了一個名為MainWindow的新類,該類繼承自Window基類,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/12370.html
標籤:WPF
上一篇:C# WPF發票列印
