2009-02-05 108 views
2

我的意思是,我在其中一列中有一個控件和文本。 通常,如果用戶更改列大小,那只是剪切文本。如果我嘗試使用帶有textblock或textbox的模板,並在模板內設置TextWrapping =「Wrap」 - 它確實不會改變任何內容。 什麼是出路?如何使用TextWrapping(WPF)獲得ListView(或DataGrid)

*是的,我查詢之前詢問,並在這個網站上發現類似的問題。但是,如果沒有答案(((*


安迪,THX的答案,雖然我自己在想,它應該那樣做。 我ckecked你的簡單變種,它的工作原理。雖然我有一個類似的例子並且它沒有工作,唯一的區別是在模板中,我使用了我的UserControl,其內部的StackPanel內有TextBlock和其他控件,並且在代碼的不同部分對Width,Horizo​​ntalAlignment等進行了實驗後我知道,我什麼都不能做,然後 - 我只是改變了StackPanel和Grid。 - 中提琴! - 它工作。我不知道這是一個錯誤還是隻是StackPanel的一些特定的反應(實際上我檢查了它的參數在運行時 - 這非常奇怪:Actu alWidth不止是DesiredSize和麪板的實際寬度)。所以如果有人能告訴我 - 爲什麼這樣? - 這很有趣。如果沒有 - 我只會使用Grid版本。

回答

4

以下爲我工作:

<ListView ItemsSource="{Binding Source={StaticResource MyItems}}"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Width="50" Header="Column 1"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate x:Name="col1Template"> 
         <TextBlock TextWrapping="WrapWithOverflow" Text="{Binding Path=Column1Text}" /> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
      ... 
     </GridView> 
    </ListView.View> 
</ListView> 

這導致了第一列中的文本換行到多個行,如果列的寬度不夠寬,以顯示所有的文字。

1

請確保您沒有定義datagrid RowHeight,或者在texttwrapped之後將覆蓋textblock的「true」高度。