WPF中的多重并行网格拆分器

WPF中的多重并行网格拆分器,wpf,gridsplitter,Wpf,Gridsplitter,我把整个屏幕分成了3行和2个网格拆分器。当前,当我移动第一个/第二个栅格拆分器时,我的中间行正在更改其高度 预期行为: 基本上,中间行的高度应保持不变,但仅应根据顶部/底部行的高度变化进行移动 如果我移动我的第一个网格拆分器,那么我的另一行应该跟随它。这意味着中间一行应该移动,最后一行应该增加高度。类似地,若我移动第二个网格拆分器,那个么中间行不应该改变其高度,而是应该移动。而第一排应该增加高度 为了更好地理解,请检查我的以下代码。 有人能帮我吗,我怎样才能做到这一点 <Grid>

我把整个屏幕分成了3行和2个网格拆分器。当前,当我移动第一个/第二个栅格拆分器时,我的中间行正在更改其高度

预期行为: 基本上,中间行的高度应保持不变,但仅应根据顶部/底部行的高度变化进行移动

如果我移动我的第一个网格拆分器,那么我的另一行应该跟随它。这意味着中间一行应该移动,最后一行应该增加高度。类似地,若我移动第二个网格拆分器,那个么中间行不应该改变其高度,而是应该移动。而第一排应该增加高度

为了更好地理解,请检查我的以下代码。 有人能帮我吗,我怎样才能做到这一点

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition Height="50" />
    </Grid.RowDefinitions>
    <Grid Grid.Row="0">
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="100"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition />
        </Grid.RowDefinitions>
        <Grid Grid.Row="0" x:Name="FirstRow">
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition Width="5"/>
                <ColumnDefinition />
                <ColumnDefinition Width="5"/>
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <TreeView Grid.Column="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" BorderBrush="Black" Background="Red"/>
            <GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="Transparent"/>
            <TreeView Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" BorderBrush="Black" Background="Green"/>
            <GridSplitter Grid.Column="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="Transparent" />
            <TreeView Grid.Column="4" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" BorderBrush="Black" Background="Blue"/>
        </Grid>
        <GridSplitter x:Name="gridSplitter1" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Center" Background="Transparent" Height="5" />
        <TextBlock x:Name="SecondRow" Grid.Row="2" Text="SecondRow" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10"/>
        <GridSplitter x:Name="gridSplitter2" Grid.Row="3" HorizontalAlignment="Stretch" VerticalAlignment="Center" Background="Transparent" Height="5" />
        <DataGrid Grid.Row="4" x:Name="ThirdRow">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Col A" />
                <DataGridTextColumn Header="Col B" />
                <DataGridTextColumn Header="Col C" />
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
    <Button Grid.Row="1" HorizontalAlignment="Left" Content="Delete" Margin="10"/>
    <Button Grid.Row="1" HorizontalAlignment="Right" Content="Close" Margin="10"/>
</Grid>


我无法理解你用这个解释想要达到什么目的。你能告诉我你移动网格分离器的方向吗。此外,可以向对象添加x:names,以便按名称引用它们。谢谢,如您所愿,我已经在每一行中添加了名称,以便于识别。如果我移动“gridsplitter1”,那么“第一行/第二行”的高度可以根据我移动的方向增加/减少。这意味着,如果我向上移动“gridsplitter1”,则“第一行”的高度将减小,“第三行”的高度将增大。但“第二排”的同一时间高度将保持不变。“第二排”的高度不能增减,只能移动。啊,太好了。谢谢你的编辑。我将尽快重新讨论这个问题