Мне нужен макет Grid с двумя строками и разделителем между ними. Строки должны иметь минимальную высоту 80 пикселей.
Этот код отлично работает:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" MinHeight="80" />
<RowDefinition Height="5" />
<RowDefinition Height="*" MinHeight="80" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{Binding Path=ActualHeight, RelativeSource={RelativeSource Self}}" />
<GridSplitter Grid.Row="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="Red" />
<TextBlock Grid.Row="2" Text="{Binding Path=ActualHeight, RelativeSource={RelativeSource Self}}" />
</Grid>
Но я хочу, чтобы верхняя строка имела автоматическую высоту, пока пользователь вручную не изменит ее с помощью разделителя. Поэтому я изменил код на этот:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" MinHeight="80" />
<RowDefinition Height="5" />
<RowDefinition Height="*" MinHeight="80" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{Binding Path=ActualHeight, RelativeSource={RelativeSource Self}}" />
<GridSplitter Grid.Row="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="Red" />
<TextBlock Grid.Row="2" Text="{Binding Path=ActualHeight, RelativeSource={RelativeSource Self}}" />
</Grid>
И есть проблема. Splitter по-прежнему удовлетворяет ограничениям строк, но он начинает бесконечно увеличивать высоту верхней строки, если я перетаскиваю разделитель слишком низко. В результате нижняя строка оказывается полностью ниже нижней границы окна.
Я сделал рефлектор в коде GridSplitter и увидел, что он использует другую логику, если строки имеют высоту Авто или Звезда.
Есть предложения, как я могу "исправить" это?