Silverlight/WPF中的佈局

 Silverlight/WPF中有3個強大的佈局控件,StackPanel、Canvas、Grid,從字面上理解,StackPanel是一種堆的佈局,就是一個挨着一個的佈局方式;Canvas是一種基於畫板的佈局方式,我們把控件放到面板上定義好座標,這點跟Html中的Div佈局類似,只是所有Div的Position都是相對定位的;Grid是一種表格方式的佈局,這點很像是Html中的表格佈局,把控件一個一個的放在表格裏。

下面我們一一進行講解:

1.StackPanel佈局

StackPanel是一種堆的佈局方式,其中Orientation屬性,決定是水平排列,還是垂直排列,下面例子垂直排列

1
2
3
4
5
<StackPanel Orientation="Vertical">
    <Rectangle Height="40" Width="40" Fill="Red"></Rectangle>
    <Rectangle Height="50" Width="50" Fill="Yellow"></Rectangle>
    <Rectangle Height="60" Width="60" Fill="Green"></Rectangle>
</StackPanel>

結果:

垂直排列改爲:

1
2
3
4
5
<StackPanel Orientation="Horizontal">
    <Rectangle Height="40" Width="40" Fill="Red"></Rectangle>
    <Rectangle Height="50" Width="50" Fill="Yellow"></Rectangle>
    <Rectangle Height="60" Width="60" Fill="Green"></Rectangle>
</StackPanel>

結果:

2.Canvas佈局

Canvas是一種基於面板的佈局方式,我們需要設置好Canvas.Top,Canvas.Left,Canvas.ZIndex屬性,即相對面板的頂端距離,左端距離和顯示順序,因爲這種佈局是絕對定位的,需要設置好Canvas面板的高度和寬度

1
2
3
4
5
<Canvas Width="500" Height="500">
    <Rectangle Canvas.Top="0" Canvas.Left="0" Canvas.ZIndex="3" Height="40" Width="40" Fill="Red"></Rectangle>
    <Rectangle Canvas.Top="30" Canvas.Left="30" Canvas.ZIndex="2" Height="50" Width="50" Fill="Yellow"></Rectangle>
    <Rectangle Canvas.Top="50" Canvas.Left="50" Canvas.ZIndex="1" Height="60" Width="60" Fill="Green"></Rectangle>
</Canvas>

結果:

3.Grid佈局

Grid佈局是一種基於表格的佈局方式,這種方式更爲靈活,可以處理複雜的佈局方式,其中要先定義行和列,再設置Grid內控件的Grid.Row和Grid.Column屬性,即該控件在表格的第幾行,第幾列,其中Grid.RowSpan和Grid.ColumnSpan屬性分別爲跨行和跨列,和Html相似。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<Grid Width="300" Height="200">
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
  
    <Rectangle Grid.Row="0" Grid.Column="0" Fill="Red"></Rectangle>
    <Rectangle Grid.Row="0" Grid.Column="1" Fill="Yellow"></Rectangle>
    <Rectangle Grid.Row="1" Grid.ColumnSpan="2" Fill="Green"></Rectangle>
</Grid>

結果:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章