主要功能
SharedSizeGroup属性可以让一个或多个Grid控件中的行或列共享高度或宽度,如果您需要同步Grid行或列的大小,它将是不二的选择
典型应用场景
假设您有一个ListBox或者ItemsControl,在它的数据模板中用Grid作为容器定义了数列,每列都展示文本,您可能想要每一列的宽度根据所有行的内容自动对齐,通常可以手动为ColumnDefiniftion指定固定宽度,但这不够灵活,SharedSizeGroup正适合这种情况。
示例代码
<ListBox Grid.IsSharedSizeScope="True" ItemsSource="{Binding Students}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid ShowGridLines="True">
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="AddressGrouop"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Address}" Grid.Column="0"/>
<TextBlock Text="{Binding Name}" Grid.Column="1"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我们需要将Grid.IsSharedSizeScope设置为true,这是启用SharedSizeGroup的前提。附加到ListBox上这样ListBox根据DataTemplate生成的每个Grid容器都将继承该属性
同时我们将第一列的SharedSizeGroup设置为AddressGrouop(您可以起任何一个合适的名字),此时该组中列的宽度会同步为满足所有内容需求的最小宽度
Comments