Элементы ItemsControl/ListBox превышают доступную ширину
Я хочу, чтобы текст в столбце 3 переносился, и у меня нет горизонтальной полосы прокрутки. Почему это не работает?
<ItemsControl x:Name="listMessages" ItemsSource="{Binding Messages}" Grid.IsSharedSizeScope="True">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Column1"/>
<ColumnDefinition Width="Auto" SharedSizeGroup="Column2"/>
<ColumnDefinition Width="*" SharedSizeGroup="Column3"/>
<ColumnDefinition Width="Auto" SharedSizeGroup="Column4"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Text1" />
<TextBlock Grid.Column="1" Text="Text2" />
<TextBlock Grid.Column="2" Text="Very long text that should wrap to the next line, but it doesn't work" TextWrapping="Wrap"/>
<TextBlock Grid.Column="3" Text="Text4" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Элементы занимают большую ширину, чем доступно для ItemsControl. Та же проблема с ListBox.
Я пытался добавить ScrollViewer.HorizontalScrollbarVisibility=Disabled
и на ItemsControl и Grid, но это не помогает.
1 ответ
Решение
Текст будет перенесен, если вы не установите SharedSizeGroup
имущество:
<ColumnDefinition Width="*"/>
Обтекание текстом и группы общего размера не подходят друг другу. Вы можете указать фиксированный MaxWidth
для ColumnDefinition
или TextBlock
,