2011-04-13 73 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或固定值,以避免任何奇怪的行爲:)