WPF ListBox Layout (динамическая ширина столбца с учетом всех строк одновременно)

Есть ли способ убедиться, что 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 отличается для каждого столбца, Width из Name столбец каждой строки отличается. Таким образом, второй столбец начинается в другой позиции х.

1 ответ

Решение

Ты можешь использовать SharedSizeGroup недвижимость в ColumnDefinition как это:

<ColumnDefinition SharedSizeGroup="A"/>

Также взгляните на это: Разделение размера сетки в WPF.

Другие вопросы по тегам