让HierachichalDataTemplate首先显示子节点。 (下订单(LRN))

时间:2018-05-30 15:09:17

标签: wpf hierarchicaldatatemplate

我想显示当前元素的路径,如下所示:

Node1 > Node1_1 > Node1_1_1

路径保存在Parent元素链中,对于上面给出的示例:

Node1_1_1.Parent == Node1_1
Node1_1.Parent == Node1

我认为归档此结果的最简单方法是使用HierachichalDataTemplate首先显示子项,然后将其自身显示为> Node.Name。从Node1_1_1元素开始。

问题是HierachichalDataTemplate首先显示当前DataContext,然后是孩子。我基本上想要归档Parent - 树的post-order遍历。

有没有办法存档?我想过要以某种方式重新定义HierachichalDataTemplate的模板,但我对WPF还不太了解,但我自己也没有对此进行归档。

1 个答案:

答案 0 :(得分:1)

我不完全确定你的意思"显示路径"但我想你希望能够在树视图中选择一个项目,并在一个单独的文本框控件中显示它的路径,就像在Windows资源管理器中一样。如果是这种情况,您需要跟踪所选项目,并在所选项目发生更改时将其父关系解析为根目录。

也就是说,viewmodel中的每个项都需要实现这样的Parent接口(假设每个viewmodel项都实现了一个IItem接口,如下所示: https://github.com/Dirkster99/InplaceEditBoxLib/blob/1a25512c7a5c4611809162d625ff9137a4ccb456/source/Solution/SolutionLib/Interfaces/IParent.cs

public interface IParent
{
   IItem Parent { get; }
}

此界面允许您通过使用while循环浏览树根来累积路径:

IItem node = MyTree.SelectedItem;
string path = MyTree.SelectedItem.Name; //Assuming you have a SelectedItem
while (node.Parent != null)
{
  path = path.Parent.Name + " > " + path;
}