在WPF中调整另一个网格行大小

时间:2011-03-25 18:35:26

标签: wpf grid resize

我想知道有没有办法通过更改XAML代码来解决这个问题?

请看这张样本图片:

enter image description here

我想要做的是当用户拖动GridSeparater No.1时,我想调整第3行网格的大小。

这是因为在这个应用程序中,第一行和第三行是可变大小,但第二行是固定大小。

这可能吗?

2 个答案:

答案 0 :(得分:4)

这可以通过ResizeBehaviour="PreviousAndNext"Link to MSDN)实现。这使您可以指定相对于GridSplitter应该受影响的行。

<Grid Width="300" Height="200" Background="Yellow"  ShowGridLines="True">
  <Grid.RowDefinitions>
    <RowDefinition Height="*" />
    <RowDefinition Height="20"/>
    <RowDefinition Height="*"/>
  </Grid.RowDefinitions>

                  <GridSplitter Grid.Row="1"
                      ResizeDirection="Rows"
                      ResizeBehavior="PreviousAndNext"
                      HorizontalAlignment="Stretch"
                      VerticalAlignment="Top"
                      Background="Black" 
                      ShowsPreview="True"
                      Height="5" 
                      />



</Grid>

答案 1 :(得分:1)

您可以尝试将MinHeight和MaxHeight设置为中心行的相同值,这会在调整顶部大小时强制重新计算底部。像这样:

  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="Auto"/>
      <RowDefinition Height="Auto"/>
      <RowDefinition Height="50" MaxHeight="50" MinHeight="50"/>
      <RowDefinition Height="Auto"/>
      <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>        
    ... other content
    <GridSplitter Height="3" Grid.Row="1" HorizontalAlignment="Stretch"/>
    <GridSplitter Height="3" Grid.Row="3" HorizontalAlignment="Stretch"/>
  </Grid>