GridSplitter没有正确拆分

Pac*_*man 9 wpf xaml

我有以下网格

<Grid>        
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
Run Code Online (Sandbox Code Playgroud)

我的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>
Run Code Online (Sandbox Code Playgroud)

当我拖动分割以分割第2/4行时,它并没有真正分割行,看起来网格高度变大了.

Moh*_*dil 24

GridSplitter有三个不同大小调整的行为,你可以看到如下:

调整行为大小

GridSplitter根据选择的重新尺寸指定的两列/行ResizeBehaviour,并根据他们的可用空间,你的情况,你指定的*高度前行,并自动高度后的行,这意味着它可以调整大小只有之前的行,后面的行将始终保持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>
Run Code Online (Sandbox Code Playgroud)

最好将所有其他行的高度设置Auto为固定值,以避免任何奇怪的行为:)