ItemsControl/ListBox 项超出可用宽度

ItemsControl/ListBox items exceed available width

我希望第 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 也有同样的问题。

我尝试在 ItemsControl 和 Grid 上添加 ScrollViewer.HorizontalScrollbarVisibility=Disabled,但这没有帮助。

如果您不设置 SharedSizeGroup 属性:

,文本将换行
<ColumnDefinition Width="*"/>

文本环绕和共享大小组不能很好地结合在一起。您可能希望为 ColumnDefinitionTextBlock.

指定一个固定的 MaxWidth