在父级Grid下,包含两个grid,两个子grid的列数不同,通常会造成两个grid的列不对齐。如果希望某几列对齐,则可以使用“共享尺寸”,方法如下:
<Grid Grid.IsSharedSizeScope="True">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Margin="5" Background="LightYellow" ShowGridLines="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="TextLabel"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Margin="5">共享尺寸组列</Label>
<Button Grid.Column="1" Margin="5">button1</Button>
<TextBox Grid.Column="2" Margin="5">文本框</TextBox>
</Grid>
<Grid Grid.Row="1" Margin="5" Background="LightYellow" ShowGridLines="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="TextLabel">
</ColumnDefinition>
<ColumnDefinition>
</ColumnDefinition>
</Grid.ColumnDefinitions>
<Label Margin= "5">共享尺寸组列</Label>
<TextBox Grid.Column='1' Margin="5">文本框,对齐在第一列</TextBox>
</Grid>
</Grid>
说明:
1. 首先在父Grid中,使用Grid.IsSharedSizeScope附加属性,设置其值为true;
2. 在子Grid中,需要对齐的列中,设置SharedSizeGroup为同一个值。如此这两个列就成了一个“组”,具备共享的尺寸空间。
效果如下所示: