首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使HierachichalDataTemplate首先显示子对象。(邮购(LRN))

使HierachichalDataTemplate首先显示子对象。(邮购(LRN))
EN

Stack Overflow用户
提问于 2018-05-30 23:09:17
回答 1查看 32关注 0票数 0

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

代码语言:javascript
复制
Node1 > Node1_1 > Node1_1_1

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

代码语言:javascript
复制
Node1_1_1.Parent == Node1_1
Node1_1.Parent == Node1

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

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

有没有办法把它归档?我想过以某种方式重新定义HierachichalDataTemplate的模板,但我对WPF的了解还不够多,还不能自己归档。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-02 07:47:19

我不完全确定您所说的“显示路径”是什么意思,但我猜您希望能够在treeview中选择一个项目,并在单独的textbox控件中显示它的路径,就像在Windows资源管理器中一样。如果是这种情况,则需要跟踪所选项目,并在所选项目发生更改时将其父关系解析到根目录。

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

代码语言:javascript
复制
public interface IParent
{
   IItem Parent { get; }
}

此接口使您能够通过使用while循环浏览到trees根来累积路径:

代码语言:javascript
复制
IItem node = MyTree.SelectedItem;
string path = MyTree.SelectedItem.Name; //Assuming you have a SelectedItem
while (node.Parent != null)
{
  path = path.Parent.Name + " > " + path;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50608079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档