每一个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可以实现元素的边框。
Z轴顺序
前面我们讨论了元素二维空间的定位,Silverlight还支持一种Z轴顺序,其元素之间可以相互重叠对,对象之间的位置是根把XAML声明的先后顺序来决定的,后声明的在先声明之上这样就会发生 重叠,但是这种重叠并不是一味不变的我们可以根据Silverlight提供的Canvas的ZIndex属性来设置元素显示的先后顺序来确定哪一个在上面哪一个在下面(索引值越小越在下面)。
Canvas
定义一个区域,在该区域中可以使用相对于该区域的坐标显式定位子元素。
在 Silverlight 的 JavaScript API 中,Canvas 对象通常为 XAML 的根元素,此 XAML 为 Silverlight 插件的 Source 属性。
Canvas 可以包含子元素,这些子元素呈现在 Canvas 区域中。每个子元素都必须为一个 UIElement。在 XAML 中,将子元素声明为充当 Canvas 对象元素的内部 XML 的对象元素。
在脚本中,可以通过获取由 Children 属性访问的集合来操作 Canvas 子对象的集合。
由于 Canvas 为 UIElement 类型,因此可以嵌套 Canvas 元素。
很多情况下,Canvas 仅仅用作其他对象的容器,而没有任何可见属性。如果满足下面的一个或多个条件,Canvas 即不可见:
-
Height 属性等于 0。
-
Width 属性等于 0。
-
Background 属性等于 null。
-
Opacity 属性等于 0。
-
Visibility 属性等于 Collapsed。
-
Canvas 的某个上级对象不可见。
在 Silverlight 的 JavaScript API 中,键盘事件仅对根元素或可设定焦点的控件(TextBox、PasswordBox)可用。Canvas 是典型的根元素,所以通常是具有键处理事件的公共对象。