Этот вопрос трудно описать лаконично, так что несите меня.WPF Размер сетки
В настоящее время у меня есть сетка с двумя рядами. Высота первой строки - Auto, а высота второй строки - *, поэтому, когда я изменяю размер окна, второй ряд растет и сжимается в зависимости от окна.
Это основная схема:
<Window>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border>
...
</Border>
<Border Grid.Row="2">
...
</Border>
</Grid>
</Window>
Вот бедный эскиз существующего поведения:
____ ____ ____
-> ->
____ ____ ____
____
____
____
Я хотел бы добавить что-то вроде «минимальной высоты» на втором ряду , так что, когда я изменяю размер окна достаточно маленьким, вторая строка перестает сокращаться, а первая строка начинает сокращаться.
Желаемая поведение:
____ ____ ____
-> -> ____
____ ____
____
____
____
Есть простой способ, чтобы получить минимальную высоту второго ряда, и заставить первый сжиматься?
Подробнее:
Когда я установил MinHeight на втором ряду, он просто обрезает сетки при изменении размера его ниже этого размера.
Размер элементов управления в первой строке неизвестен во время компиляции, но известен во время выполнения. Если это необходимая часть решения, я могу установить MaxHeight в строке, но сейчас работает Auto height.
Элементы управления во второй строке не имеют явного размера. Они могут быть изменены, но я стараюсь, чтобы они не становились меньше желаемой минимальной высоты.
не работает. Высота первой строки ведет себя точно так же, как если бы во второй строке не было MinHeight. Он только уменьшает вдвое меньше, чем окно. Это приводит к обрезанию второй строки. –
@ KendallFrey Предыдущее решение не работало для всех случаев, поэтому я добавил решение, которое должно отвечать вашим потребностям. –
Спасибо за MultiBinding. Я не знал об этом. Один вопрос: в реальной сетке есть несколько других строк с фиксированным и автоматическим размером, поэтому я предполагаю, что я должен делать «gridHeight - row2height - row3height» и т. Д.? –