WPF布局容器有6种,分别是StackPanel、WrapPanel、DockPanel、Grid(网格)、UniformGrid、Canvas(画布)。

StackPanel

在单个行中水平或垂直排列对象,Orientation属性分别: Horizontal / Vertical。

StackPanel布局

WrapPanel

按顺序从左到右排列对象。 面板最右边空间不足时,它会将内容换行到下一行,并采用从左到右、从上到下的换行顺序。 还可以使自动换行面板的方向垂直,以便对象从上到下、从左到右排列。

WrapPanel默认排列方向与StackPanel相反,WrapPanel的Orientation默认为Horizontal。

WrapPanel布局

DockPanel

排列对象,使它们停留或停靠在面板的一个边缘。

默认DockPanel中的元素具备DockPanel.Dock属性, 该属性为枚举具备: Top、Left、Right、Bottom。

默认情况下, DockPanel中的元素不添加DockPanel.Dock属性, 则系统则会默认添加 Left。

DockPanel有一个LastChildFill属性, 该属性默认为true, 该属性作用为, 当容器中的最后一个元素时, 默认该元素填充DockPanel所有空间。

DockPanel布局

Grid(网格)

在行和列中排列对象。Grid具备分割空间的能力。

RowDefinitions / ColumnDefinitions 用于给Grid分配行与列。

ColumnSpan / RowSpan 则用于设置空间元素的跨列与跨行。

Grid布局

<Grid>
    <Grid.RowDefinitions><!--行-->
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions><!--列-->
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>

    <Button Content="按钮1" Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2"></Button>
    <Button Content="按钮2" Grid.Row="1" Grid.Column="0" Margin="10"></Button>
</Grid>

Canvas(画布)

按任何所需方式排列对象。 当用户运行你的应用时,这些元素将在屏幕上具有固定位置。

该容器就相当于一个 “地图”, 包含内的所有控件元素, 则都通过使用XY来定位。

UniformGrid

将对象排列到相等或统一的网格区域中。 此面板非常适用于排列图像的列表。


参考资料:

WPF布局介绍(1)

在 XAML 设计器中将对象组织到布局容器中

 
返回顶部