我正在使用带有几个heierachical datatemplates的WPF树视图。 Treeview具有拖放功能。
有人可以帮助我获取所选的TreeViewItem的标题部分高度(实际高度)。如果我得到所选项目ActualHeight(TreeViewItem.ActualHeight),那么它将给出孩子们的高度。但我想要的只是Header元素的高度。 我通过使用VisualTree搜索在数据模板内找到覆盖整个标题的控件(边框)来实现这一点。我想要的是一种更快的方法(比视觉树搜索更快)因为我在树视图的DragOver事件中这样做。
答案 0 :(得分:2)
TreeViewItem有一个名为PART_Header的标题的命名部分,您可以使用ControlTemplate.FindName来获取对该部分的引用。请注意,如果控件模板已更改且新模板实际上未呈现标题,则可能会丢失它。
var header = treeViewItem.Template.FindName("PART_Header", treeViewItem)
as FrameworkElement;
if (header != null)
{
var height = header.ActualHeight;
}
(您当前使用的边框可能是此元素的父级,因此您的结果可能略有不同)。