2009-07-20 111 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開發人員來說完全一樣。