#wpf #xaml
#wpf #xaml
Вопрос:
У меня есть следующая сетка
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
мой разделитель сетки находится в строке 3 (4-я строка), определите следующим образом:
<GridSplitter Grid.Row="3"
ResizeDirection="Rows"
Style="{StaticResource HorizontalGridSplitter}"
IsTabStop="False" />
<Style x:Key="HorizontalGridSplitter"
TargetType="{x:Type GridSplitter}">
<Setter Property="Height"
Value="4" />
<Setter Property="HorizontalAlignment"
Value="Stretch" />
<Setter Property="VerticalAlignment"
Value="Stretch" />
<Setter Property="Margin"
Value="0" />
</Style>
Когда я перетаскиваю разделитель, чтобы разделить строку 2/4, на самом деле строки не разделяются, кажется, что высота сетки увеличивается.
Комментарии:
1. У меня была похожая проблема, к сожалению, я не могу вспомнить, как я ее решил…
Ответ №1:
GridSplitter
Имеет три разных режима изменения размера, как вы можете видеть ниже:
GridSplitter
Изменяет размеры указанных двух столбцов / строк в соответствии с выбранным ResizeBehaviour
и в соответствии с доступным пространством для них, в вашем случае вы указали * height для предыдущей строки и Auto height для последующей строки, что означает, что он может изменить размер только предыдущей строки, следующая строка всегда останется Auto
:
Чтобы устранить эту проблему, вы должны установить для строк до и после значения Width="*"
и настроить поведение изменения размера на ResizeBehavior="PreviousAndNext"
смотрите следующий фрагмент кода:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<GridSplitter Grid.Row="3" ResizeDirection="Rows"
Style="{StaticResource HorizontalGridSplitter}"
IsTabStop="False" HorizontalAlignment="Stretch"
ResizeBehavior="PreviousAndNext" />
</Grid>
Также лучше установить высоту всех остальных строк на Auto
или фиксированное значение, чтобы избежать любого странного поведения 🙂