WPF列表框项目不是wordwrapping

时间:2009-07-20 02:04:40

标签: .net wpf listbox word-wrap

我的ListBox除了其他内容之外还有一个很长的描述字段。我没有水平滚动条,而是想用自动换行。 如果我设置了MaxWidth,但由于ListBox更改了大小,我不想对该值进行硬编码。

最好的方法是什么?

编辑:说明位于TextBlock

简化的XAML(删除了无关紧要的东西,仍然显示问题:

         <ListBox BorderThickness="0" Padding="5" Name="lstTasks">
            <ListBox.ItemsSource>
                <Binding Source="{StaticResource dataTasks}"/>
            </ListBox.ItemsSource>

            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <TextBlock Text="{Binding Path=RequestDescription}" TextTrimming="WordEllipsis" TextWrapping="Wrap" Height="60" />
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

2 个答案:

答案 0 :(得分:31)

尝试将ListBoxItems的宽度强制为ListBox的宽度:

<ListBox
     Name="lstTasks"
     BorderThickness="0"
     Padding="5"
     HorizontalContentAlignment="Stretch">

您也可以尝试禁用水平滚动:

<ListBox
     ScrollViewer.HorizontalScrollBarVisibility="Disabled"
     ...>

答案 1 :(得分:0)

使用包装和修剪没有任何意义。您应该使用其中一个texttrimming或textwrapping。它修剪它没有包裹。

对于文字处理,Matt的答案对于修剪是正确的,您应该定义宽度 maxwidth 属性值。

SL开发人员完全相同。