c# - WPF DataGrid 实际 ColumnHeaderHeight

标签 c# wpf datagrid

当我将 WPF DataGrid 的 ColumnHeaderHeight 设置为 Auto (double.NaN) 时,如何获取列标题的实际呈现高度?

我似乎无法在 DataGrid 类中找到该属性。

最佳答案

您可以通过在可视化树中搜索 DataGridColumnHeadersPresenter 并阅读其 ActualHeight 属性来获取它。

    var headersPresenter = FindVisualChild<DataGridColumnHeadersPresenter>(dataGrid);
    double actualHeight = headersPresenter.ActualHeight;

这是 FindVisualChild 方法。它也可以作为扩展方法实现。

public static T FindVisualChild<T>(DependencyObject current) where T : DependencyObject
{
    if (current == null) return null;
    int childrenCount = VisualTreeHelper.GetChildrenCount(current);
    for (int i = 0; i < childrenCount ; i++)
    {
        DependencyObject child = VisualTreeHelper.GetChild(current, i);
        if (child is T) return (T)child;
        T result = FindVisualChild<T>(child);
        if (result != null) return result;
    }
    return null;
}

关于c# - WPF DataGrid 实际 ColumnHeaderHeight,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23905923/

相关文章:

c# - 检查字符串是否以 4 个数字结尾

WPF 命令 - 在没有代码隐藏的情况下执行此操作

wpf - 有什么办法可以提取底层Xaml吗?

c# - 将行为应用于 WPF DataGrid 行

C# ASP.NET DataGrid 复选框

.net - WPF 数据网格文本列中的绑定(bind)

c# - 来自不同上下文的实体是否相互兼容?

c# - 循环遍历标志枚举,同时忽略组合类型

c# - 第 1 行 ' ' 附近的 MySQL 语法错误

wpf - 如何在 Visual Studio 2010 中为数值数组创建自定义图像装饰插件?