GridSplitter没有正确拆分

时间:2011-04-13 19:24:52

标签: wpf xaml

我有以下网格

<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 个答案:

答案 0 :(得分:24)

GridSplitter有三种不同的调整大小行为,如下所示:

Resize Behaviours

GridSplitter根据所选的ResizeBehaviour重新调整指定的两列/行的大小,并根据它们的可用空间,在您的情况下为之前的行指定* height,以及Auto后面的行的高度,这意味着它只能重新调整之前的行,后面的行将始终保持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或固定值以避免任何奇怪的行为:)