WPF列表框布局(动态列宽度考虑所有行的一次)
本文关键字:一次 布局 列表 动态 WPF | 更新日期: 2023-09-27 18:13:03
是否有一种方法可以确保Width="auto"
属性考虑列表中所有元素的Width
,而不是单独计算列表中的每一行?
<ListBox x:Name="listBox" HorizontalContentAlignment="Stretch" DockPanel.Dock="Top">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name}" />
<TextBlock Grid.Column="1" Text="{Binding Value}" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我尝试了这个,但是由于Name
的长度对于每一列是不同的,每行Name
列的Width
是不同的。因此,第二列从不同的x位置开始。
您可以在ColumnDefinition
中使用SharedSizeGroup
属性:
<ColumnDefinition SharedSizeGroup="A"/>
还可以看看这个:WPF中的网格大小共享