WPF 列表框布局(同时考虑所有行的动态列宽)

WPF ListBox Layout (dynamic column width considering all rows at once)

有没有办法确保 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"/>

也看看这个:Grid Size Sharing in WPF