2009-07-20 50 views
11

我的ListBox有一个描述字段,其中可能会很长。而不是有一个水平滚动条,我想单词包装它。 它工作,如果我设置MaxWidth但自ListBox更改大小我不想硬编码值。WPF listbox item not wordwrapping

这样做的最好方法是什么?

编辑:描述在TextBlock

简体XAML(去掉unnessesary的东西,仍然显示问题:

  <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> 
+0

既然你说设置MaxWidth会起作用,那么如何将MaxWidth绑定到导致宽度改变的东西呢? – 2009-07-20 02:25:34

回答

29

尝试迫使你的ListBoxItems的宽度为列表框的宽度:

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

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

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

谢谢,禁用Scroll Bar会立即修复它。 – 2009-07-20 02:31:19

0

没有使用包装和tr的意思在一起。你应该使用其中的一个文本打包或者textwrapping。它修剪它不包裹。

对于textwrapping马特的答案是微调,应该定义宽度maxwidth属性值正确。

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