WPF 树视图:WordWrap

Mir*_*Mir 2 wpf

我有一个项目,显示带有大量文本的分层数据,我正在从 winforms 过渡到 wpf,并且 winforms 树视图不是开箱即用的自动换行,我真的想知道如何在 wpf 中执行此操作。是否可以让 TreeView 中的项目使用开箱即用的自动换行?

我已经循环了相当多的线程和谷歌结果,但没有一个给我任何工作方法。ScrollViewer.Horizo​​ntalScrollBarVisibility="false" 也让我无处可去。

如果不存在,将如何实施?我对 wpf 还很陌生,所以我希望能有一个推进的方向。

哦,框架是3.5。

Ada*_*dam 5

我认为您必须将树视图节点模板的根控件的宽度绑定到树视图本身的实际宽度。所以像下面这样:

<TreeView x:Name="tv">
   <TreeView.ItemTemplate>
      <DataTemplate TargetType={x:Type TreeViewItem}">
         <TextBlock Text="{Binding PropertyToBind}" Width="{Binding ActualWidth, ElementName=tv}" TextWrapping="Wrap"/>
      </DataTemplate>
   </TreeView.ItemTemplate>
</TreeView>  
Run Code Online (Sandbox Code Playgroud)

您还应该能够使用相对源设置宽度绑定,但我不记得语法了。

通常这些类型的问题是通过将元素强制限制在其父元素内部来解决的(尽管技术上应该已经这样做了)。只是一个想法。祝你好运。