【WPF學習】第一章 XAML介紹


   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基類。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM