让 HierachichalDataTemplate 首先显示 children。 (Post-order (LRN))

Make HierachichalDataTemplate display children first. (Post-order (LRN))

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

Node1 > Node1_1 > Node1_1_1

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

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

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

问题是 HierachichalDataTemplate 先显示当前 DataContext,然后显示 children。我基本上想存档 post-order 遍历我的 Parent-tree.

有什么方法可以存档吗?我考虑过以某种方式重新定义 HierachichalDataTemplate 的模板,但我对 WPF 的了解还不够,无法自己存档。

我不完全确定你所说的 "displaying the path" 是什么意思,但我想你希望能够 select 树视图中的项目并在单独的文本框控件中显示其路径,例如Windows 探索者。如果是这种情况,您需要跟踪 selected 项并在 selected 项更改时将其父关系解析为根。

也就是说,您的视图模型中的每个项目都需要像这样实现一个父接口(假设每个视图模型项目都实现一个 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;
}