主要功能

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(您可以起任何一个合适的名字),此时该组中列的宽度会同步为满足所有内容需求的最小宽度