Элементы 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,

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