我想显示当前元素的路径,如下所示:
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还不太了解,但我自己也没有对此进行归档。
答案 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;
}