快速掌握WPF XAML基本知識


本篇從如下兩個方面學習WPF XAML:

1、基本概念

2、基本語法

一、基本概念

1、XAML是派生自XML的可擴展應用程序標記語言(Extensible Application Markup Language)。微軟創造。應用在WPF,WF,Silverlight,Metro App等開發技術中。

2、在WPF中,XAML用來開發用戶界面。繼承了XML的Tag,Attribute等語法。另有一些語法上的創新。

3、在WPF中,XAML運行在CLR之上,但它不編譯為IL,而是編譯為BAML代碼,在運行時會被解析成CLR類型(Types)。

4、WPF中XAML是大小寫敏感的。

二、基本語法

1、Tag語法=對象元素(Object Elements)

  每個標簽即是一個對象元素,將被解析為一個WPF Framework(主要來自PresentationFramework.dll)中的類的實例。下面的代碼就是一個對象元素,運行時會被解析為一個Button對象實例。

<Button></Button>

或寫成

<Button />

2、Attribute賦值語法

2.1 普通字符串賦值。下面代碼給Button的Property和Event賦值。字符串將被通過包裝好的TypeConverter來轉換成對象。TypeConverter使用C#的Attribute技術來實現的。

<Button Content="aaa" Click="Button_Click" />

2.2 標記擴展賦值。用花括號這種方式賦值就叫標記擴展賦值。常用的地方是在用到綁定和資源的時候。

<Button Command="{Binding Copy}" />

2.3 屬性元素賦值。有的時候簡單字符串賦值不了的,就用屬性元素賦值。

<Button>
    <Button.Content>aaa</Button.Content>                
</Button>

2.4 內容賦值。控件要有Content這個屬性,也就是要繼承自ContentControl這個類,才能這么賦值。夾在標簽中間。

<Button>aaa</Button>

2.5 集合賦值。下面例子是給StackPanel.Children這個屬性賦值一個集合,被省略了。這個屬性的類型是UIElementCollection。在這個例子,我們也看到WPF支持一些省略的寫法,在實際開發中運用,可以使XAML代碼更簡潔。

<StackPanel>
    <Button>a</Button>
    <Button>b</Button>
</StackPanel>

3、命名空間。

一般用在Root元素上(Application,Window,UserControl,Page,ResourceDictionary等)。如下例子,xmlns為引入命名空間的attribute。第一行xmlns是沒有指定別名的,是默認命名空間,它指定的命名空間包含了微軟提供所有的XAML控件的程序集。第二行xmlns別名是x,也是微軟提供的命名空間,這里面主要包含了一些關於解析Xaml語言的程序集。第三行xmlns是自己引入的,開發人員自己寫的控件等,可以通過命名空間這種方式引用到XAML文檔來使用。

<Window x:Class="WpfFirst.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:System;assembly=System"
        Title="MainWindow" Height="350" Width="525">    
</Window>

4、附加屬性,附加事件。

下面例子,Panel.ZIndex就是附加屬性,而附加事件是界面上用不了的。具體在寫屬性和事件時候討論。

<StackPanel>
  <Button Panel.ZIndex="1">a</Button>
  <Button Panel.ZIndex="2">b</Button>
</StackPanel>

5、樹。

XAML文檔是樹狀結構的。在WPF中,有邏輯樹(Logical Tree)和可視樹(Visual Tree)的概念,在運行時會維護這兩棵樹。邏輯樹是以我們看到的控件為節點的,這些控件一般繼承與FrameworkElement or FrameworkContentElement,而可視樹能看到控件內部的元素,這些元素一般繼承自Visual類。WPF提供了兩個輔助類(LogicalTreeHelper and VisualTreeHelper)來操作這兩棵樹。


免責聲明!

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



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