Вы не должны устанавливать высоту самой строки, так как она изменяется с помощью заголовка и тому подобного.Существует свойство DataGrid.RowHeight
, которое позволяет вам сделать это правильно.
Если вам нужно выбрать высоту выборочно, вы можете создать стиль и привязать высоту DataGridCellsPresenter
к какому-либо свойству на вашемэлементы:
<DataGrid.Resources>
<Style TargetType="DataGridCellsPresenter">
<Setter Property="Height" Value="{Binding RowHeight}" />
</Style>
</DataGrid.Resources>
Или вы можете получить докладчика из визуального дерева (я рекомендую не рекомендовать это) и назначить высоту там:
// In LoadingRow the presenter will not be there yet.
e.Row.Loaded += (s, _) =>
{
var cellsPresenter = e.Row.FindChildOfType<DataGridCellsPresenter>();
cellsPresenter.Height = 120;
};
ГдеFindChildOfType
- это метод расширения, который можно определить так:
public static T FindChildOfType<T>(this DependencyObject dpo) where T : DependencyObject
{
int cCount = VisualTreeHelper.GetChildrenCount(dpo);
for (int i = 0; i < cCount; i++)
{
var child = VisualTreeHelper.GetChild(dpo, i);
if (child.GetType() == typeof(T))
{
return child as T;
}
else
{
var subChild = child.FindChildOfType<T>();
if (subChild != null) return subChild;
}
}
return null;
}