制作TreeViewItem包的一部分

我有一个TreeViewItem ,里面有多个部分 – 一个图标,一个标题和一段数据。 我试图把最后一部分包裹起来,而不是把所有东西都包起来,而我没有运气。 以下是问题的说明:

这不是包装。

我尝试了一些我在Stack Overflow上发现的东西,没有运气。 我找到了三条建议:

  1. 将项目放在一个网格中,其中一列绑定到TreeView的实际宽度。 这是在下面的XAML中实现的,但似乎没有帮助。

  2. 使用ScrollViewer.HorizontalScrollBarVisibility = "Disabled" TreeView上的水平滚动,我也在下面的XAML中实现了。

  3. WrapPanel包装我需要的东西。 我尝试了这个,但结果不佳。 当我将整个TreeViewItem包装在一起时,我得到了难以控制的包装(整个项目包装,所以所有部分都包裹起来,看起来很糟糕)。 当我将所需的TextBlock包装在一个中时,我根本没有得到任何结果。 所以我把它拿出来了。

这是我为TreeViewItem的模板:

                       

这是布局的图示,因此您可以看到TreeViewItem的组成方式:

TreeViewItem布局。

基本上,灰色部分是图标,绿色部分只是项目之间的间隔,蓝色部分是标题和冒号(基本上与此问题无关),红色部分是实际内容。

这是我要包装的红色部分。

这是TreeView定义:

  

我觉得我做的事情很简单,但我不确定是什么。 有没有办法实现这一点,而不只是将TextBlock宽度锁定为任意的,如200?

我的调查显示TextBlock Wrap不适用于 。 所以我将DataTemplate中的最后一个更改为

不幸的是,TreeViewItem(它是TreeView项的默认容器)在其模板中具有并将我们的项目放在那里。 我试图使用创建一个自定义模板,但它工作但代码非常长。 所以我决定通过绑定网格宽度来补偿效果:

                      

ScrollViewer.HorizontalScrollBarVisibility="Disabled"是重要的元素,应该设置。

尝试使用DockPanel更改DataTemplate中的网格:

         

在此处输入图像描述