【问题标题】:WPF listbox item not wordwrappingWPF列表框项目不自动换行
【发布时间】:2010-11-12 04:41:50
【问题描述】:

我的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>

【问题讨论】:

  • 既然你说设置 MaxWidth 会起作用,那么将 MaxWidth 绑定到导致宽度改变的东西怎么样?

标签: .net wpf listbox word-wrap


【解决方案1】:

同时使用环绕和修剪没有任何意义。您应该使用其中之一 texttrimming 或 textwrapping。它修剪它不包裹。

对于文本换行,Matt 的回答对于修剪是正确的,您应该定义 widthma​​xwidth 属性值。

对于 SL 开发人员来说完全一样。

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 谢谢,禁用滚动条会立即修复它。
    • 如果它对你有用,请点赞。 Stack cmets 不是 ebay 评级。
    • +1 设置滚动条的可见性似乎将包含的控件的宽度限制在列表框的范围内。奇怪但真实。
    • 不要将“禁用”与“隐藏”混淆!那是我的错误。 “隐藏”表示还有滚动条,只是看不到而已。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多