PureNsanity
Сначала я должен разобраться с терминологией... Вы используете responsive в веб-смысле, и, кроме того, поведение, которое вы описываете, соответствует этому определению responsive.
Когда речь идет в области WPF, responsive в основном используется для описания потоковой передачи и реагирования на действия пользователя.
Размер по умолчанию в сетках WPF является относительным, что означает, что ему присваивается значение относительно высоты сетки и это взвешенное значение. По умолчанию определение строки получает взвешенное значение 1. Таким образом, если у вас есть 5 строк и вы оставляете их по умолчанию, каждая строка получает 1/(1+1+1+1+1) = 1/5 от общей высоты.
Теперь предположим, что вы изменили некоторые из этих относительных значений и присвоили последней строке значение 2. Это означает, что общий вес высоты сетки теперь равен 6, а строки 1-4 получат 1/(1+1+1+1+2)=1/6 из высоты и ряда 5 получится 2/6.
RowDefinition также может принимать высоту "Auto", которая будет автоматически определять размер высоты в зависимости от содержимого. Судя по твоему описанию, это именно то, что тебе нужно.
Он также имеет свойство MinHeight и MaxHeight, если вы просто хотите избежать его превышения или понижения определенного значения.
Авто и относительные высоты могут быть объединены. Очень распространенным примером присвоения высоты является что-то вроде:
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
Это означает, что сделайте строки 1 - 4 автоматическими, а последняя строка заполнит оставшееся свободное пространство.