天天看點

WPF學習筆記(一)——建立WPF應用程式

(一) 建立WPF應用程式

XAML語言:可擴充應用程式标記語言,命名空間與.NET中的不是一一對應的,而是一對多,都是“網址”類型的,是遵循XAML解析器标準的命名規則,不是真正的網址。

xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml
           

對應一些與XAML文法和編譯相關的CLR名稱空間,例如

這裡的xmlns和xmlns:x的差別在于x作為别名,在應用時,以字首形式出現,而xmlns作為預設命名空間,不使用字首辨別的元素,來自該命名空間。

XAML命名空間的文法:

xmlns[:可選映射字首]=“命名空間描述”

**注意:*沒有加可選映射字首的xmlns是WPF預設的命名空間,一個xaml檔案隻能有一個預設的命名空間

一個完整的xaml檔案,必須具備兩個命名空間。

(二) WPF用于布局的面闆包括:

StackPanel 棧面闆、WrapPanel 環繞面闆、DockPanel 停靠面闆、Canvas 畫布、Grid 網格面闆、UniformGrid 均布網格 HorizontalAlignment水準對齊 VerticalAlignment垂直對齊

下面分别介紹:

I. Grid類把窗體分割成若幹網格,有ColumnDefinitions和RowDefinitions兩個屬性,定義多少列、多少行,對于行高和列寬可以設定三類值:

1)絕對值:double數值加機關字尾,預設為像素

2)比例值:double數值後加,表示該行占據窗體剩下的所有的高度,寬度,讓窗體3:1,隻要将兩個行定義分别設定為3和就可以了。

3)自動值:字元串Auto

如果希望列寬可以拖動,Grip布局本身是不支援的,需要用Grid布局加上GridSplitter來實作,GridSplitter會改變Grid初始的行高、列寬,代碼如下:

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="25"></RowDefinition>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="150"></ColumnDefinition>
            <ColumnDefinition Width="Auto"></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <TextBox Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" BorderBrush="Black" />
        <TextBox Grid.Row="1" Grid.Column="0" BorderBrush="Black" />
        <GridSplitter Grid.Row="1" Grid.Column="1" VerticalAlignment="Stretch" HorizontalAlignment="Center" Width="5" Background="Gray" ShowsPreview="True"></GridSplitter>
        <TextBox Grid.Row="1" Grid.Column="2" BorderBrush="Black" />
    </Grid>
           

控件跨行或者跨列:(相當于合并單元格)

正常狀态:

跨列:

跨行和跨列一樣,用Grid.RowSpan。自适應寬度和高度其HorizontalAlignment 和VerticalAlignment 用Stretch,當設定這兩個屬性時,如果向填充整個區域,不能設定Width和Height屬性,Margin是設定控件與父級容器的所有邊距;若為Top則是頂部對齊的效果,此時可以設定Height高度,寬度不可設;若為HorizontalAlignment為Left,VerticalAlignment為Bottom是水準左對齊,可設定寬度,垂直底部對齊,可設定高度。

II. StackPanel相當于一行橫排或者一列豎排(Orientation設定水準垂直屬性),嵌套也能實作Grid效果,是以水準或者豎直方向對子元素進行排列。

III. WrapPanel在一系列可換行的行中放置元素,水準方向上從左到右,垂直方向上自上而下。

IV. DockPanel根據容器的整個邊界調整元素。

V. UniformGrid在不可見但強制所有單元格具有相同尺寸的表中防止元素。

VI. Canvas使用固定坐标絕對定位元素,沒有鎖定或停靠功能,對于尺寸可變的視窗不适用。

讓控件跟着窗體一起變化的方法:

利用WPF中的ViewBox容器空間,它會自動縮放容器中的子空間以填滿自身,但它隻能有一個控件,可以把Canvas控件作為ViewBox控件的子控件,然後在Canvas中布局其他的控件。

<Viewbox Name=”Viewbox1” Stretch=”Fill”>
<Canvas Height=”200”Name=”Canvas1”Width=”300”Background=”#FF8EDE75”>
</Canvas>
 </Viewbox>  
           
WPF

繼續閱讀