我想通过将节点设计为使用HierarchicalDataTemplate实现的单个视图来制作非常特殊的树视图:
<!-- ... -->
<TreeView ItemsSource="{Binding Path=ContentFrom}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding ChildNodes}" >
<local:IndividualTreeNodeView />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
<!-- ... -->
现在的问题是,要设计 IndividualTreeNodeView 权限,我需要的不仅仅是树状视图的更多信息。 我需要从第一个节点到边界的距离,以及每个树节点级别的“深度”。
从屏幕快照中,我看到第一个没有插入22px,每个级别又插入了19px。但我不想查看屏幕截图。
在哪里可以读取TreeView或其他地方的那些值?
答案 0 :(得分:0)
这不是解决问题的最轻松的方法,但这应该会有所帮助:
Point p0 = YourTreeView.PointToScreen(new Point());
返回树状视图的位置
Point p1 = YourTreeViewItem.PointToScreen(new Point());
返回treeViewItem的位置 结果将为您提供其增量(p0.X-p1.X),然后您可以在TreeView中计算其“深度”
或者,您可以尝试使用循环和Control.Parent从TreeViewItem开始爬上可视树,然后在击中treeView之前对上面的TreeViewItems进行计数以获取其“深度”(代码未在我的手机上经过即时测试)< / p>
TreeViewItem item = YourTreeViewItem;
int depth = 0;
while(item.Parent.GetType() != typeof(TreeView))
{
depth++;
item = item.Parent as TreeViewItem;
}
不幸的是,没有参数可以直接超出以获得“深度”