Я хочу макет 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 все еще удовлетворяет ограничениям строки, но он начинает бесконечно увеличивать высоту верхней строки, если я перетаскиваю сплиттер слишком низко. В результате нижний ряд будет полностью ниже нижней границы окна.
Я сделал несколько Reflector для кода GridSplitter и вижу, что он использует другую логику, если строки имеют Авто или звездную высоту.
Любые предложения, как я могу "исправить" это?