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.