Я создаю ListView, который должен иметь пять столбцов - первый должен иметь текст любой длины и должен переноситься при изменении размера окна (в дополнение к изменению высоты строки, чтобы обернутый текст был виден), а остальные четыре столбца имеют статическую ширину 45. Я искал часы по этому вопросу, и каждое решение, с которым я сталкивался, либо требует статической ширины, либо не работает.
Решенные решения:
Ширина столбца auto, 1 *, 2 * и т. Д. (Настройки игнорируются) DockPanel (настройки игнорируются) WrapPanel (игнорируется) Установка Width в RelativeSource родительского элемента для ActualWidth (игнорируется)
Есть идеи?Похоже, что у значительного числа людей была такая же проблема, но я бы предпочел не идти по пути статической ширины для этого столбца.Тем более, что контент просто обрезается, когда я так делаю (даже с height = "Auto" для строки).Ширина всего окна может составлять всего 1024, но также может быть и 1600+, поэтому я хочу динамический размер.Таким образом, на меньших экранах будет перенос содержимого, а на больших экранах будет отображаться только одна строка, так как содержимое подходит.
Вот код XAML:
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="45" />
<ColumnDefinition Width="45" />
<ColumnDefinition Width="45" />
<ColumnDefinition Width="45" />
</Grid.ColumnDefinitions>
<!-- This is the TextBlock that needs to wrap its content (and
change the height of the row (so the full content is still
visible) to whatever the available space is, but should not
make overall ListView wider than the parent's width. -->
<TextBlock Text="{Binding Content}" Padding="20,6,6,6" />
<!-- These four blocks will have other content eventually, but only need
to be 45 wide -->
<TextBlock Text="X" Grid.Column="1" HorizontalAlignment="Center" />
<TextBlock Text="X" Grid.Column="2" HorizontalAlignment="Center" />
<TextBlock Text="X" Grid.Column="3" HorizontalAlignment="Center" />
<TextBlock Text="X" Grid.Column="4" HorizontalAlignment="Center" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>