Сначала я подумал, что связывание высоты вашего пользовательского элемента управления с высотой строки через общее свойство может сработать, однако мне пришло в голову, что вы не можете связать высоту строки как подклассы RowDefinition DependencyObject, но метод SetBinding являетсяопределено в FrameworkElement.
Тем не менее, одним из вариантов может быть программный поиск высоты строки и привязка к ней высоты элемента управления.
Пример свойства
private int controlHeight;
public int ControlHeight
{
get
{
int row = Grid.GetRow(this.myControl);
return myGrid.RowDefinitions[row].Height;
}
set
{
controlHeight = value;
//Implement property changed event etc here if needed
}
}
Если вы хотите обеспечить динамическое масштабирование размера элемента управления (кроме нагрузки), потребуется дополнительный код для обновления свойства и уведомления пользовательского интерфейса.Вы также можете проверить высоту сетки и поделить на количество столбцов в этом свойстве, хотя это может быть не настолько масштабируемым.
Обратите внимание: поскольку вы используете colSpan, вам может потребоваться разделить высоту строки на 2.