在 WPF 数据网格中查找行的高度

use*_*195 4 c# wpf datagrid

有人可以告诉我如何做到这一点吗?

我试过了

dtgMain.RowHeight;
Run Code Online (Sandbox Code Playgroud)

但这总是返回 NAN。

Ami*_*mit 5

使用 VisualTreeHelper 从数据网格获取 DataGridRow。然后在 DataGridRow 上使用 ActualHeight 属性。

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

            T childItem = GetFirstVisualChild<T>(child);
            if (childItem != null) return childItem;
        }
    }

    return null;
}
Run Code Online (Sandbox Code Playgroud)

然后:

DataGridRow row = GetFirstVisualChild<DataGridRow>(dtgMain);
if(row != null)
{
    row.ActualHeight;
}
Run Code Online (Sandbox Code Playgroud)


The*_*aut 1

这很可能是因为网格尚未渲染。在尝试获取 RowHeigth 之前,请查看用于渲染网格的测量和排列函数。