制作TreeViewItem包的一部分
我有一个TreeViewItem
,里面有多个部分 – 一个图标,一个标题和一段数据。 我试图把最后一部分包裹起来,而不是把所有东西都包起来,而我没有运气。 以下是问题的说明:
我尝试了一些我在Stack Overflow上发现的东西,没有运气。 我找到了三条建议:
-
将项目放在一个网格中,其中一列绑定到
TreeView
的实际宽度。 这是在下面的XAML中实现的,但似乎没有帮助。 -
使用
ScrollViewer.HorizontalScrollBarVisibility = "Disabled"
TreeView
上的水平滚动,我也在下面的XAML中实现了。 -
在
WrapPanel
包装我需要的东西。 我尝试了这个,但结果不佳。 当我将整个TreeViewItem
包装在一起时,我得到了难以控制的包装(整个项目包装,所以所有部分都包裹起来,看起来很糟糕)。 当我将所需的TextBlock
包装在一个中时,我根本没有得到任何结果。 所以我把它拿出来了。
这是我为TreeViewItem
的模板:
这是布局的图示,因此您可以看到TreeViewItem
的组成方式:
基本上,灰色部分是图标,绿色部分只是项目之间的间隔,蓝色部分是标题和冒号(基本上与此问题无关),红色部分是实际内容。
这是我要包装的红色部分。
这是TreeView
定义:
我觉得我做的事情很简单,但我不确定是什么。 有没有办法实现这一点,而不只是将TextBlock
宽度锁定为任意的,如200?
我的调查显示TextBlock Wrap不适用于
。 所以我将DataTemplate中的最后一个
更改为
。
不幸的是,TreeViewItem(它是TreeView项的默认容器)在其模板中具有
并将我们的项目放在那里。 我试图使用
创建一个自定义模板,但它工作但代码非常长。 所以我决定通过绑定网格宽度来补偿效果:
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
是重要的元素,应该设置。
尝试使用DockPanel更改DataTemplate中的网格: