2016-11-22 82 views
0

我有一個的ListView和在它的ItemTemplate有一個的TextBlock(網格內),它通常具有文本的長行。問題是,如果文本太長,它會增加ListViewItem的寬度,而不是包裝文本。如何限制TextBlock的寬度,使其不超過ListView的寬度?限制TextBlock的寬度在WPF的ListView

我不想將寬度硬化爲一個常量值。

我試過ScrollViewer.Horizo​​ntalScrollBarVisibility屬性設置爲殘疾人並設置TextWrapping =「包裝」上TextBlock的,但沒有做的伎倆。 當調試應用程序的live屬性瀏覽器表明,即使ScrollViewer.Horizo​​ntalScrollBarVisibility被禁用,它還是水平滾動(在IScrollProvider.Horizo​​ntallyScrollable屬性爲)。

任何想法如何才能正確限制文本塊大小?

+0

你用'TextBlock'的'MaxWidth'屬性試過了嗎? –

+0

是的,我可以限制寬度,但我不想將其硬編碼爲常量值(ListView可以在應用程序的主窗口調整大小時更改它的大小),也可以將其綁定到ListView的ActualWidth對象。兩者都是脆弱的解決方案。 – Bedford

回答

1

如果你不想硬編碼爲MaxWidth文本塊,只是給出了基於ListView的寬度相對寬度它。

+0

我希望有一個更優雅的方式,但它似乎是我要使用的解決方案(將MaxWidth屬性與轉換器的父級ListView的ActualWidth屬性的95%值綁定)。 – Bedford

1

發揮它一點點,這給了我預期的結果:

<ListView x:Name="listView" 
        HorizontalAlignment="Stretch" 
        ScrollViewer.HorizontalScrollBarVisibility="Disabled" > 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding Path=.}" TextWrapping="Wrap"></TextBlock> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 

希望你的作品呢!

+0

謝謝你的嘗試。這個示例也適用於我,但由於某種原因,我的程序沒有。我會檢查差異。 – Bedford