這一次,我的問題就像聽起來一樣簡單......你如何讓文字在WPF TreeViewItem
中包裝?如何在WPF TreeViewItem中進行文本換行?
我有一個簡單的HierarchicalDataTemplate
只有一個TextBlock
在裏面。
<TextBlock Text="{Binding Value}" TextWrapping="Wrap" />
該文字不換行。
我試過TextBlock
的Width
結合TreeView
的ActualWidth
,但儘管這使文本套,TreeViewItem
的Width
不適合在TreeView
因爲TreeView
有Padding
。綁定到TreeViewItem
的ActualWidth
具有(不出所料)同樣的效果。另一個缺點是,即使文字很少的項目在TreeView
範圍之外。
<TextBlock Text="{Binding Value}" TextWrapping="Wrap" Width="{Binding ActualWidth,
ElementName=TreeView}" />
當然必須有一個更好的辦法,像不知何故通知TreeView
的界限的TreeViewItem
......我不能相信它不會自動知道。但我該怎麼做?
UPDATE >>>
由於HB的答案,我設法將Grid.ColumnSpan
更改爲2對,他在ControlTemplate
提到的Bd
Border
並設置寬度,使文本現在包裝精美。問題是我在其他TreeView
s中使用此ControlTemplate
其他TreeViewItem
s,我不想要全寬項目。
我想出的解決方案很簡單。我已在TreeViewItem.Tag
值綁定到Grid.ColumnSpan
財產在ControlTemplate
像這樣:
<Border Grid.ColumnSpan="{Binding Tag, RelativeSource={RelativeSource TemplatedParent}}"
Name="Bd" Grid.Column="1" ... />
這使我改變Grid.ColumnSpan
,因此,全寬或由TreeViewItem.Tag
值設置爲任意2 TreeViewItem
普通寬度行爲或1。
你可以張貼一些XAML? – 2012-01-19 23:38:18