GridSplitter не расщепляется правильно - PullRequest
9 голосов
/ 13 апреля 2011

У меня есть следующая сетка

<Grid>        
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>

мой GridSplitter находится на строке 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 Ответ

24 голосов
/ 14 апреля 2011

GridSplitter имеет три различных режима изменения размера, как вы можете видеть ниже:

Resize Behaviours

GridSplitter изменяет размеры указанных двух столбцов / строк в соответствии с выбранным ResizeBehaviour и в соответствии с доступным для них пространством, в вашем случае вы указали * высоту для строки до и Автоматическую высоту для строки after, что означает, что он может изменить размер только строки до, строка после всегда будет оставаться Auto:

enter image description here

Чтобы устранить эту проблему, необходимо установить строку до и строку после на 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 или фиксированное значение, чтобы избежать каких-либо странных действий:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...