天天看點

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

  

作者:Peter Luo

出處:https://www.cnblogs.com/Peter-Luo/

本文版權歸作者和部落格園共有,歡迎轉載,但必須給出原文連結,并保留此段聲明,否則保留追究法律責任的權利。

繼續閱讀