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位置开始。

WPF列表框布局(动态列宽度考虑所有行的一次)

您可以在ColumnDefinition中使用SharedSizeGroup属性:

<ColumnDefinition SharedSizeGroup="A"/>

还可以看看这个:WPF中的网格大小共享