这次,我的问题很简单...如何让文本在WPF的
我有一个简单的
当然,一定有更好的方法,比如让
更新>>> 感谢H.B.的回答,我成功地将他在
我想出的解决办法很简单。我已经将
这让我可以通过将
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}" />
当然,一定有更好的方法,比如让
TreeViewItem
知道TreeView
的边界...我无法相信它不会自动知道。但是我该怎么做呢?更新>>> 感谢H.B.的回答,我成功地将他在
ControlTemplate
中提到的Bd
Border
的Grid.ColumnSpan
更改为2,并设置了宽度,使文本现在可以很好地换行。问题是我正在使用这个ControlTemplate
来处理其他TreeView
中的TreeViewItem
,而我不想要全宽度的项目。我想出的解决办法很简单。我已经将
TreeViewItem.Tag
值绑定到ControlTemplate
中的Grid.ColumnSpan
属性上,如下所示:<Border Grid.ColumnSpan="{Binding Tag, RelativeSource={RelativeSource TemplatedParent}}"
Name="Bd" Grid.Column="1" ... />
这让我可以通过将
TreeViewItem.Tag
的值分别设置为2或1来更改TreeViewItem
的 Grid.ColumnSpan
,从而实现全宽度或普通宽度行为。