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>
来源:oschina
链接:https://my.oschina.net/u/943175/blog/106592