WPF TreeView有两个单独的ItemsPanel用于分支和叶子

时间:2013-02-27 14:17:37

标签: c# wpf xaml wpf-controls

我正在使用TreeView创建图形。下面是一个截屏。到目前为止,一切都是通过造型完成的。我将TreeView的ItemsPanel设置为水平StackPanel。 (纸夹只是没有图像的项目的占位符。)

Screen shot of tree view graph

注意底层孩子是叶子。他们自己没有孩子。

以下是问题:我希望这些项目进入单独的WrapPanel。问题是一个项目显然可以有孩子的孩子和没有孩子的孩子(分支和叶子)。 ItemsPanel仍然需要是StackPanel,因此您可以获得漂亮的水平布局。但StackPanel中的最后一个控件需要是一个包含所有无子女的WrapPanel。

这是我拼凑在一起的屏幕截图,显示了WrapPanel中的Leaf。

Screen shot of tree view with wrap panel

我尝试过的事情

我尝试创建自己的项目面板转换器,但是将整个项目面板转换为包装面板。

我试图向ItemTemplate添加一个单独的树视图并将其绑定到一个单独的集合,但这不是正确的外观。

我还没试过的东西

我所说的WrapPanel几乎就像一个分支。但分支本身是空的,但包含孩子。也许我可以根据属性更改节点的样式。然后它不是显示图片或其他任何东西,而是数据模板将是WrapPanel

1 个答案:

答案 0 :(得分:0)

我明白了。

  1. 我浏览了我的分层数据集并进行了一些更改。对于每个分支,我删除了它的叶子并将它们添加到一个新节点。然后我将节点添加回分支。它创造了一个占位符。

  2. 该节点包含一个名为“IsLeafCollection”的属性。它只是验证每个孩子都没有孩子。

  3. 我有一个绑定到IsLeafCollection的数据触发器。如果是,则将项目面板更改为包装面板。

  4. 以下是最终结果的截图。

    Screen shot of tree view