WPF-网格拆分器在两个网格之间不工作

WPF-网格拆分器在两个网格之间不工作,wpf,xaml,grid,Wpf,Xaml,Grid,我在使网格拆分器正常工作方面遇到一些问题 我已经将GridSplitter放置在两个网格之间,但问题是网格拆分器连接到左侧网格,这是我唯一可以使用拆分器移动的网格。如果将左侧栅格移向右侧栅格,右侧栅格将变小,但如果将其移离右侧栅格,则其扩展不会超过其初始大小 如何放置GridSplitter,使其能够调整右侧栅格的宽度,然后在拖动左侧栅格时减小其宽度 我确实向正确网格的一个子网格添加了SharedSizeGroup,但我不确定这是否与我的问题有关,删除它并不能解决任何问题 我也尝试过和GridS

我在使网格拆分器正常工作方面遇到一些问题

我已经将GridSplitter放置在两个网格之间,但问题是网格拆分器连接到左侧网格,这是我唯一可以使用拆分器移动的网格。如果将左侧栅格移向右侧栅格,右侧栅格将变小,但如果将其移离右侧栅格,则其扩展不会超过其初始大小

如何放置GridSplitter,使其能够调整右侧栅格的宽度,然后在拖动左侧栅格时减小其宽度

我确实向正确网格的一个子网格添加了SharedSizeGroup,但我不确定这是否与我的问题有关,删除它并不能解决任何问题

我也尝试过和GridSplitter的ResizeBehavor一起玩,但也没有运气

我希望这是有道理的

XAML:


看看这个

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>

        <TextBlock Grid.Column="3"></TextBlock>

        <Label Grid.Row="0"
               Grid.Column="0"
               VerticalContentAlignment="Center"
               Margin="5" />
        <ComboBox Grid.Row="0"
                  Grid.Column="1"
                  MinWidth="200px" />
        <Label Grid.Column="2"
               VerticalContentAlignment="Center"
               Margin="10 5 5 5" />
        <ComboBox Grid.Row="0"
                  Grid.Column="3"
                  IsEditable="True"
                  MinWidth="250px" />
    </Grid>

    <Grid Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <!-- The "Left" Grid -->
        <Grid Grid.Column="0"
              Background="Aqua">
        </Grid>

        <GridSplitter HorizontalAlignment="Stretch"
                      ResizeDirection="Columns"
                      Width="10"
                      Grid.Column="1"
                      ResizeBehavior="PreviousAndNext" />

        <!-- The "Right" Grid -->
        <Grid Grid.Column="2"
              Panel.ZIndex="2"
              MinWidth="200"
              Background="Yellow">
            <Border BorderBrush="Blue"
                    BorderThickness="1"
                    MinWidth="200"
                    Background="#4C808080">
                <GroupBox MinWidth="200">
                    <GroupBox.HeaderTemplate>
                        <DataTemplate>
                            <Grid>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="Auto" />
                                </Grid.RowDefinitions>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto" />
                                    <ColumnDefinition Width="*"></ColumnDefinition>
                                </Grid.ColumnDefinitions>
                                <TextBlock  Grid.Row="0"
                                            Grid.Column="1"
                                            Margin="5" />
                            </Grid>
                        </DataTemplate>
                    </GroupBox.HeaderTemplate>
                    <Grid Grid.IsSharedSizeScope="True">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="*" />
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"
                                              SharedSizeGroup="Label" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Label Grid.Column="0"
                               Grid.Row="0"
                               Margin="5"
                               VerticalAlignment="Center"
                               Grid.ColumnSpan="2" />
                        <TextBox Grid.Column="1"
                                 Grid.Row="0"
                                 Margin="5,7"
                                 VerticalAlignment="Center"
                                 IsReadOnly="True" />

                        <Label Grid.Column="0"
                               Grid.Row="1"
                               Margin="5"
                               VerticalAlignment="Center"
                               Grid.ColumnSpan="2" />
                        <TextBox  Grid.Column="1"
                                  Grid.Row="1"
                                  Margin="5,7"
                                  VerticalAlignment="Center"
                                  IsReadOnly="True" />

                        <ItemsControl Grid.Row="2"
                                      Grid.Column="0"
                                      Grid.ColumnSpan="2">
                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <Grid>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="Auto" />
                                        </Grid.RowDefinitions>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="Auto"
                                                              SharedSizeGroup="Label" />
                                            <ColumnDefinition Width="*" />
                                        </Grid.ColumnDefinitions>

                                        <Label Grid.Column="0"
                                               Grid.Row="0"
                                               Margin="5"
                                               VerticalAlignment="Center" />
                                        <TextBox Grid.Column="1"
                                                 Grid.Row="0"
                                                 Margin="5"
                                                 VerticalAlignment="Center"
                                                 IsReadOnly="True" />
                                    </Grid>
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>
                        </ItemsControl>
                    </Grid>
                </GroupBox>
            </Border>
        </Grid>
    </Grid>

    <!--Below grid only shown when errors are present. Not relevant for problem -->
    <Grid Grid.Row="2">
        <TextBlock />
    </Grid>
</Grid>

这意味着当您启动应用程序时,第一列的大小将是第三列的两倍。

这应该是一个不错的展示,列的大小完全相同,只是侧面而已

<Grid>

    <Grid.RowDefinitions>
        <RowDefinition Height="300"/> //sets the height of the first row
        <RowDefinition Height="*"/> //* sets the remainder of the height, doesn't work like auto!
    </Grid.RowDefinitions>

    <Grid Grid.Row="0"
          HorizontalAlignment="Left"
          Width="400"
          Background="Green" />

    <Grid Grid.Row="0" 
          Margin="400,0,0,0" 
          Background="Red"/>

    <Grid Grid.Row="1" 
          Background="Blue"/>

    <GridSplitter Grid.Row="0"
                  VerticalAlignment="Bottom"  
                  HorizontalAlignment="Stretch" 
                  Height="2.5" 
                  Background="Black" />

</Grid>

//设置第一行的高度
//*设置剩余的高度,不像自动!

它可以工作,谢谢。但现在两个网格最初的大小相同。我希望正确的网格比web浏览器网格窄。我将如何实现这一点?我可以看到,您删除了右侧的水平对齐,我认为这是更改GridRowDefinitions中宽度的一种方法。例如:左边的行为Width=“2*”,右边的行为Width=“1*”。仍然无法使其工作。您能指出我在哪里设置宽度以减少“右侧”网格的起始宽度吗。对不起,我的XAML知识真的很差!谢谢我不知道你能做到。好的,我还有最后一个问题(希望如此),当使用网格拆分器扩展正确的网格,从而减小web浏览器的宽度时,一切都很酷。但是,如果缩小右侧网格的宽度,从而扩展web浏览器,它会以白色背景闪烁,就像在努力快速渲染一样。您知道如何在扩展web浏览器时去除白色背景吗?欢迎光临。Puh…很久没有使用webbrowser控件了。我认为您的想法是正确的:渲染需要一些时间。但我不太确定,也不知道你是否能或如何改变这一点;很抱歉
<Grid Grid.Row="1">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="2*" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="1*" />
    </Grid.ColumnDefinitions>

    <!-- The "Left" Grid -->
<Grid>

    <Grid.RowDefinitions>
        <RowDefinition Height="300"/> //sets the height of the first row
        <RowDefinition Height="*"/> //* sets the remainder of the height, doesn't work like auto!
    </Grid.RowDefinitions>

    <Grid Grid.Row="0"
          HorizontalAlignment="Left"
          Width="400"
          Background="Green" />

    <Grid Grid.Row="0" 
          Margin="400,0,0,0" 
          Background="Red"/>

    <Grid Grid.Row="1" 
          Background="Blue"/>

    <GridSplitter Grid.Row="0"
                  VerticalAlignment="Bottom"  
                  HorizontalAlignment="Stretch" 
                  Height="2.5" 
                  Background="Black" />

</Grid>