主要功能
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