Silverlight学习之布局

silverlight布局主要有三种布局方式 Grid StackPanel和Canvas

Canvas

Canvas 采用的是相对定位布局,通过Canvas.Left和Canvas.Top两个属性来控制元素在Canvas中的位置。

 <Canvas >
            <Button Canvas.Left="50" Canvas.Top="50" Width="150" Height="50" Content="Hello"/>
            <Button Canvas.Left="50" Canvas.Top="110" Width="150" Height="50" Content="World"/>
</Canvas>

效果

其中从上往下第一个按钮距左50,距上50。第二个距左50,距上为110。

两个控件的left和top属性的值相同时,需要默认的是显示后一个控件,可以通过Canvas的Canvas.ZIndex属性,来改变显示的先后顺序,ZIndex越大的控件越靠前。

两个坐标相同时,Content为World的按钮在上边。

 <Canvas >
            <Button Canvas.Left="50" Canvas.Top="50" Width="150" Height="50" Content="Hello" />
            <Button Canvas.Left="50" Canvas.Top="50" Width="150" Height="50" Content="World"/>
 </Canvas>

效果

设置ZIndex,Content为Hello的按钮在上边。

 <Canvas >
            <Button Canvas.Left="50" Canvas.Top="50" Width="150" Height="50" Content="Hello" Canvas.ZIndex="1" />
            <Button Canvas.Left="50" Canvas.Top="50" Width="150" Height="50" Content="World"/>
        </Canvas>

效果

 

StackPanel

StackPanel通过行或列来排列它内部的元素,并且默认的情况下不会产生重叠。StackPanel默认的排列方式为Vertical,可以通过Orienzation来设置排列的方式。

默认情况下

<StackPanel>
        <Button Width="150" Height="50" Content="StackPanel"  Margin="0,50,0,0"></Button>
        <Button Width="150" Height="50" Content="Vetical" Margin="0,50,0,0"></Button>
 </StackPanel>

效果

设置Orienzation属性为Horizontal

 <StackPanel Orientation="Horizontal">
        <Button Width="150" Height="50" Content="Hello"  Margin="0,50,0,0"></Button>
        <Button Width="150" Height="50" Content="World" Margin="0,50,0,0"></Button>
    </StackPanel>

效果

 

Grid

Grid相当于Html中的Tabel,可以Grid.RowDefinitions和Grid.ColumnDefinitions定义行和列,然后通过Grid.Row和Grid.Column属性来定义控件在Grid的位置。

 

  <Grid Width="300" Height="200" Background="Orange" ShowGridLines="True">
        <Grid.RowDefinitions>
         <RowDefinition Height="50"/>
         <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
         <ColumnDefinition Width="150"/>
         <ColumnDefinition/>
        </Grid.ColumnDefinitions>
            <Button Content="Hello" Grid.Row="0" Grid.Column="0" Height="30" Width="100"></Button>
            <Button Content="World" Grid.Row="0" Grid.Column="1" Height="30" Width="100"></Button>
            <Button Content="Welcome" Grid.Row="1" Grid.Column="0" Height="30" Width="100"></Button>
            <Button Content="Nihao" Grid.Row="1" Grid.Column="1" Height="30" Width="100"></Button>
        </Grid>

上面代码定义了一个Grid有两行两列,通过ShowGridLines属性可以显示Grid中的分隔线。

效果

 

 

posted @ 2010-04-15 18:49  JerryT  阅读(352)  评论(0编辑  收藏  举报