1. Grid控件
Grid定义由列和行组成的网格布局。Grid.RowDefinitions和Grid.ColumnDefinitions集合分别包含RowDefinition和ColumnDefinition用来定义行和列的宽度和高度,行列的数量是根据集合中子对象的数量被定义的。各子对象中Grid.Row和Grid.Column属性用于定义在网格中的位置。 2. StackPanel控件 StackPanel控件可以使布局内的各子对象以水平或垂直的方式顺序排列。通过设置Orientation="Vertical"或者Orientation="Horizontal"来定义排列方式。默认情况以垂直方向排列子对象。 3. Canvas 以绝对位置的方式布局。通过设置子对象Canvas.Left 指定对象与所在的 Canvas 的左侧之间的距离(x 坐标);Canvas.Top 指定对象与所在的 Canvas 的顶部之间的距离(y 坐标) Canvas 可以包含子对象,这些子对象呈现在 Canvas 区域中,是通过坐标来显式定位的。由于绝对定位不考虑浏览器窗口的大小或浏览器大小调整,因此一般最好使用 Grid 或 StackPanel 作为容器。 由于 Canvas 为 UIElement 类型,因此可以嵌套 Canvas 对象 很多情况下,Canvas 仅仅用作其他对象的容器,而没有任何可见属性。如果满足以下任一条件,Canvas 即不可见 Height 属性等于 0 Width 属性等于 0 Background 属性等于 nullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing) Opacity 属性等于 0 Visibility 属性等于 Visibility.Collapsed。 Canvas 的某个上级对象不可见。 <Canvas Width="300" Height="300" Background="White"> <Canvas Width="250" Height="250" Canvas.Left="30" Canvas.Top="30" Background="blue"> <Rectangle Canvas.Left="30" Canvas.Top="30" Fill="red" Width="200" Height="200" /> </Canvas> </Canvas> 4. ScrollViewer ScrollViewer控件用来表示可包含其他可见元素的可滚动区域。设置HorizontalScrollBarVisibility 和VerticalScrollBarVisibility属性可以控制水平滚动条和垂直滚动条的状态。 5. Border Border 控件不太适用于布局,但是确实是容器控件。 Border 控件可为另一控件提供边框和/或背景。一个边框只能包含一个子元素。 下面的示例演示如何在 StackPanel 中包含的多个 TextBlock 对象周围放置一个边框。 <Border BorderThickness="5" BorderBrush="Blue" > <StackPanel Grid.Column="0" Grid.Row="0">1 q) <TextBlock Text="One"/> <TextBlock Text="Two"/> <TextBlock Text="Three"/> </StackPanel> </Border>