WPF TreeView : WordWrap

标签 wpf

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

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

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

哦,框架是3.5。

最佳答案

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

<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>  

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

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

关于WPF TreeView : WordWrap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6351655/

相关文章:

wpf - 更改日期时TimeSpanUpDown的显示错误的解决方法

wpf - 如何在 WPF 中流式传输网络摄像头?

c# - Observable.Interval 未以预期频率更新 UI

c# - 如何在 ViewModel 之间访问数据?

wpf - 如何绑定(bind)到 ContentControl 的数据模板中的数据

c# - 仅允许在 WPF 文本框中输入数字

wpf - 如何在触发器中使用代码隐藏属性来更改控件属性?

c# - 仅在 ListView 中选择一个

c# - 将文本转换为多重绑定(bind)

WPF 和 MVVM : Update an image field without breaking the pattern