Silverlight开发历程—(布局控件-Canvas)

每一个XAML文件都应该有一个布局对象,布局对象相当于一个容器他可以容纳几乎所有的XAML元素,Silverlight为开发者提供了三种布局对象Canvas、StackPanel、Grid。

Canvas:Canvas允许声明一个区域,包含在该区域内的XAML元素可以使用相对Canvas坐标的附加属性来显示和定位元素。

StackPanel:StackPanel允许把若干个元素放在StackPanel中排成一行或者一列。

Grid:允许声明一个若干行若干列组成网格,行和列具备自适应能力。

Canvas 相对定位

Canvas 相对定位是在Canvas目标元素相对于父元素Canvas的位置,Canvas内的任何元素都可以使用附加属性Canvas.Top和Canvas.Left来设置元素的相对位置。

Canvas嵌套

Canvas嵌套,在Canvas中可以进行多个Canvas对象进行嵌套。

使用边框(Border)

Canvas有BackGround属性可以设置背景颜色,但是Canvas没有类似于矩形边框的颜色和宽度,更不能像矩形一样设置圆角边框,但是Silverlight提供了专门的边框元素Border可以实现元素的边框,下面结合Canvas嵌套、Canvas相对定位、Canvas使用边框我们做了一个综合的例子:

<Canvas x:Name="LayoutRoot" Background="White">
        <Border BorderThickness="30" BorderBrush="Green" CornerRadius="30" Canvas.Left="30" Canvas.Top="40" Width="330" Height="230">
            <Canvas Background="Yellow">
                <Canvas  Background="Blue" Width="230" Height="130" Canvas.Left="20" Canvas.Top="21" >
                    <Canvas Background="Red" Width="200" Height="97" Canvas.Left="15" Canvas.Top="20">
                        <TextBlock   Height="63" Width="194" FontSize="15" Foreground="White" Canvas.Left="6" Canvas.Top="19">
                            这是一个使用了边框还使用了<LineBreak/>Canvas嵌套的Canvas
                        </TextBlock>
                    </Canvas>
                </Canvas>
            </Canvas>
        </Border>
    </Canvas>


运行结果:

 

Z轴顺序

前面我们讨论了元素二维空间的定位,Silverlight还支持一种Z轴顺序,其元素之间可以相互重叠对,对象之间的位置是根把XAML声明的先后顺序来决定的,后声明的在先声明之上这样就会发生 重叠,但是这种重叠并不是一味不变的我们可以根据Silverlight提供的Canvas的ZIndex属性来设置元素显示的先后顺序来确定哪一个在上面哪一个在下面(索引值越小越在下面),例如下面这个例子(左边的是使用默认的排序,右边的是设置了元素的ZIndex属性):

<Canvas x:Name="LayoutRoot" Background="White">
        <Ellipse Width="100" Height="100" Stroke="Black" StrokeThickness="3" Fill="Yellow"></Ellipse>
        <Ellipse Width="100" Height="100" Stroke="Black" StrokeThickness="3" Fill="Green" Canvas.Left="20" Canvas.Top="20"></Ellipse>
        <Ellipse Width="100" Height="100" Stroke="Black" StrokeThickness="3" Fill="Red" Canvas.Left="42" Canvas.Top="43"></Ellipse>

        <Ellipse Width="100" Height="100" Stroke="Black" StrokeThickness="3" Fill="Yellow" Canvas.Left="300" Canvas.ZIndex="3"></Ellipse>
        <Ellipse Width="100" Height="100" Stroke="Black" StrokeThickness="3" Fill="Green" Canvas.Left="288" Canvas.ZIndex="2" Canvas.Top="28"></Ellipse>
        <Ellipse Width="100" Height="100" Stroke="Black" StrokeThickness="3" Fill="Red" Canvas.Left="269" Canvas.ZIndex="1" Canvas.Top="62"></Ellipse>
    </Canvas>


运行结果:

例子很简单,只是为了体验Silverlight的Canvas的布局功能 。

posted @ 2011-10-29 10:12  Bodi  阅读(205)  评论(0编辑  收藏  举报