Я хочу, чтобы макет сетки с двумя рядами и разделителем между ними. Строки должны иметь минимальную высоту 80 пикселей.GridSplitter с минимальными ограничениями
Этот код прекрасно работает:
<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 и вижу, что он использует другую логику, если строки имеют Auto или Star height.
Любые предложения, как я могу «исправить» это?
Благодарим вас, но я хочу сохранить авто логику – Seldon
Это работало блестяще для меня, теперь калибровка работает отлично. – Contango