布局容器
Grid
定义由列和行组成的灵活的网格区域。
行
XML
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
列
XML
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
背景
XML
<Border Grid.Row="0" Grid.Column="0" Background="Red"/>
<Border Grid.Row="0" Grid.Column="1" Background="Blue"/>
<Border Grid.Row="1" Grid.Column="0" Background="Green"/>
<Border Grid.Row="1" Grid.Column="1" Background="Yellow"/>
尺寸
自动适应:以所在行的元素最高尺寸为标准来定义行高。
绝对尺寸:给指定数值或者比例来定义行高。
跨行跨列:类似合并方格。
StackPanel
将子元素排列成水平或垂直的一行(默认:垂直)。
WrapPanel
将子元素按从左到右的顺序定位,将内容分到其包含框边缘的下一行(默认:水平排列)。
DockPanel
将子内容停靠在布局容器的边缘。
UniformGrid
提供一种在网格(网格中的所有单元格都具有相同的大小)中排列内容的方法。
案例
XML
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Background="#7671D8"/>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Border Background="Blue"/>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.8*"/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Margin="5" Grid.Column="0" Background="#BCC2FA"/>
<Border Margin="5" Grid.Column="1" Background="#5DA8CF"/>
<Border Margin="5" Grid.Column="2" Background="#DF7FCF"/>
<Border Margin="5" Grid.Column="3" Background="#4FB8B7"/>
<Border Margin="5" Grid.Column="4" Background="#E07A7D"/>
<Border Grid.Row="1" Grid.ColumnSpan="3" Background="red" Margin="5"/>
<Border Grid.Row="1" Grid.Column="3" Grid.ColumnSpan="2" Background="Yellow" Margin="5"/>
<Border Grid.Row="2" Grid.ColumnSpan="3" Background="Blue" Margin="5"/>
<Border Grid.Row="2" Grid.Column="3" Grid.ColumnSpan="2" Background="Green" Margin="5"/>
</Grid>
</Grid>
</Grid>