你使用ColumnDefinition 的SharedSizeGroup 属性使ListBox中所有的子项的列大小都一样。这是因为列表中的每一项中都有自己Grid实例,并且各个不同的Grid之间共享了列宽。
一个很普通的例子,我们可以在一个窗口中的两个Grid 控件之间共享列宽。
<StackPanel Grid.IsSharedSizeScope="True">
<Label Content="First grid:" />
<Grid Margin="10" ShowGridLines="True" Background="AliceBlue">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="A"/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Content="{Binding Thing1}"/>
</Grid>
<Label Content="Second grid:" />
<Grid Margin="10" ShowGridLines="True" Background="AliceBlue">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="Auto" SharedSizeGroup="A"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Grid.Column="1" Content="{Binding Thing2}"/>
</Grid>
<Button Margin="10" Content="Change Thing1" Click="Button_Click" />
</StackPanel>
我们将第一个Grid中的第一个列和第二个Grid中的第二列共享列宽(将他们的SharedSizeGroup 属性值设为一样)。
然后在Thing1中添加字符,是它变宽,发现第二个Grid的第二列也同样变宽了。