У меня есть окна WPF, где я хочу, чтобы сечение в верхней части окна было просто высотой всех элементов, содержащихся в нем. В нижней части окна должна быть зона регулируемой высоты. Если окно стало выше, то нижняя часть должна быть растущей, а не верхней.
Внутри нижней части окна я хочу, чтобы в ней было два раздела. Верхняя секция должна быть секцией с регулируемой высотой, а нижняя секция должна быть только высотой, необходимой для отображения всех элементов, содержащихся в ней.
Если вы посмотрите на код xaml ниже, вы увидите, что у меня определены три сетки. Внешняя сетка имеет два определения строки, где для верхней строки установлено значение «Авто», поэтому высоты достаточно, чтобы вместить все содержащиеся в ней элементы. Второй ряд должен быть регулируемым, чтобы позволить ему заполнить остальную часть размера окна.
Внутри второго ряда внешней сетки находится еще одна сетка, которая должна позволить первому ряду быть гибким по высоте, а второй ряд - достаточно высоким для всех элементов, содержащихся в нем.
У меня проблема в том, что все окно не заполнено. Нижняя сетка находится только частично на внешнем окне. Почему не все окно заполнено нижней сеткой? Как я могу изменить определение, чтобы учесть это?
<Window x:Class="WPFSample.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid x:Name="LayoutRoot">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
<RowDefinition Height="*" />
<RowDefinition />
</Grid.RowDefinitions>
<Grid x:Name="TopGrid" VerticalAlignment="Top" Width="Auto" Height="Auto" Grid.Row="0">
<Button Height="23" HorizontalAlignment="Left" Margin="60,0,0,4" Name="button1" VerticalAlignment="Bottom" Width="75">Button</Button>
</Grid>
<Grid x:Name="BottomGrid" Width="Auto" Height="Auto" VerticalAlignment="Bottom" Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition />
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<Button Grid.Row="0" Height="23" Margin="60,0,61,4" Name="button2" VerticalAlignment="Bottom">Button</Button>
<Button Grid.Row="1" Height="23" Margin="60,0,61,4" Name="button3" VerticalAlignment="Bottom">Button</Button>
</Grid>
</Grid>