Dot-Net

WPF列錶框項目不自動換行

  • January 11, 2017

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>

嘗試強制 ListBoxItems 的寬度為 ListBox 的寬度:

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

您也可以嘗試禁用水平滾動:

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

一起使用包裝和修剪沒有任何意義。您應該使用其中之一的 texttrimming 或 textwrapping。它修剪它不包裹。

對於 textwrapping,Matt 的答案對於修剪是正確的,您應該定義widthmaxwidth屬性值。

對於 SL 開發人員來說,它完全相同。

引用自:https://stackoverflow.com/questions/1151471