ItemsControl / ListBox项目超出可用宽度

时间:2017-06-22 09:51:08

标签: wpf xaml itemscontrol listboxitem

我希望第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,但这没有帮助。

1 个答案:

答案 0 :(得分:1)

如果您未设置SharedSizeGroup属性

,文本将被包装
<ColumnDefinition Width="*"/>

文字换行和共享尺寸组不能很好地结合在一起。您可能需要为MaxWidthColumnDefinition指定固定的TextBlock