2011-04-13 39 views
9

我有以下电网GridSplitter无法正常分裂

<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行,它并不真正拆分行,看起来网格高度变得更大。

+0

我有一个类似的问题,不幸的是我不记得我是如何解决它... – 2011-04-13 19:51:32

回答

24

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

Resize Behaviours

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