在哪里可以找到WPF TreeView的度量?

时间:2019-01-16 08:45:52

标签: c# wpf xaml

我想通过将节点设计为使用HierarchicalDataTemplate实现的单个视图来制作非常特殊的树视图:

<!-- ... -->
<TreeView ItemsSource="{Binding Path=ContentFrom}">
  <TreeView.ItemTemplate>
      <HierarchicalDataTemplate ItemsSource="{Binding ChildNodes}" >
          <local:IndividualTreeNodeView />
      </HierarchicalDataTemplate>
  </TreeView.ItemTemplate>
</TreeView>
<!-- ... -->

现在的问题是,要设计 IndividualTreeNodeView 权限,我需要的不仅仅是树状视图的更多信息。 我需要从第一个节点到边界的距离,以及每个树节点级别的“深度”。

enter image description here

从屏幕快照中,我看到第一个没有插入22px,每个级别又插入了19px。但我不想查看屏幕截图。

在哪里可以读取TreeView或其他地方的那些值?

1 个答案:

答案 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;

        }

不幸的是,没有参数可以直接超出以获得“深度”