Я хочу создать сетку с двумя строками и разделителем между ними. Строки должны иметь минимальную высоту 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 и вижу, что он использует другую логику, если строки имеют Auto или Star height.
Любые предложения, как я могу "исправить" его?