Ограничить высоту строки в «Авто» и «1 *» в WPF

У меня есть приложение WPF, макет которого состоит из 3 строк на верхнем уровнеGrid.

Я хочу, чтобы средний ряд занимал необходимое ему пространство (максимальное необходимое пространство ограничено, но зависит от ширины окна). Нижний ряд должен занимать оставшееся пространство. Хитрая часть - верхний ряд. Его размер может варьироваться в зависимости от кнопки, которая переключает видимость большой части контента. Я хочу использовать максимум 50% высоты, но не больше, чем нужно. Следующий XAML описывает, чего я хочу достичь:

    <Grid.RowDefinitions>
        <!-- neither "1*" nor "Auto" fully meets my needs -->
        <RowDefinition Height="Min(1*,Auto)"></RowDefinition>

        <RowDefinition Height="Auto"></RowDefinition>

        <RowDefinition Height="1*"></RowDefinition>
    </Grid.RowDefinitions>

Строки:

WrapPanelWrapPanelTextBox

если это важно

Ответы на вопрос(3)

Ваш ответ на вопрос