如何在相当大的列中创建水平网格划分器

时间:2014-12-08 13:43:07

标签: c# wpf xaml grid gridsplitter

我正在尝试创建一个包含水平网格划分器的相当大的列。

代码是WPF的XAML:     

<DockPanel Name="dockPanel1" LastChildFill="True" >
    <Grid Name="D1G1" ShowGridLines="False" DockPanel.Dock="Top">

        <Grid.RowDefinitions>
            <RowDefinition Height="30"/>
        </Grid.RowDefinitions>

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

        <Label Content="Toppie" Grid.Column="1" Grid.Row="0" />
    </Grid>

    <Grid Name="D1G2" ShowGridLines="False" DockPanel.Dock="Bottom">

        <Grid.RowDefinitions>
            <RowDefinition Height="30"/>
        </Grid.RowDefinitions>

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

        <Label Content="Bottom" Grid.Column="1" Grid.Row="0" />
    </Grid>

    <Grid Name="D1G3" ShowGridLines="False" DockPanel.Dock="Top">

        <Grid.RowDefinitions>
            <RowDefinition Height="30"/>
        </Grid.RowDefinitions>

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

        <GridSplitter HorizontalAlignment="Right" 
              VerticalAlignment="Stretch" 
              Grid.Column="1" ResizeBehavior="PreviousAndNext"
              Width="2" Background="#FFBCBCBC"/>

        <DockPanel Name="dockPanel2" DockPanel.Dock="Left" Grid.Column="0">
            <Grid Name="D2G1" ShowGridLines="False" DockPanel.Dock="Top">

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

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

                <GridSplitter HorizontalAlignment="Stretch"
                              Grid.Row="1" Grid.ColumnSpan="1" ResizeBehavior="PreviousAndNext"
                              Width="5" Background="#FFBCBCBC"/>

                <Label Content="D2Row0" Grid.Row="0" />
                <!-- separator at Row1 -->
                <Label Content="D2Row2" Grid.Row="2" />
            </Grid>

        </DockPanel>

    </Grid>


</DockPanel>

我可以创建其中一个单独的。但我想要两个。 要在表单中制作更多网格,我使用dockpanel。也许这不是必要的,但如果我不这样做会产生错误。 我哪里出错了?任何人都有线索?

1 个答案:

答案 0 :(得分:0)

试试这个:

 <DockPanel Name="dockPanel1" LastChildFill="True" >
    <Grid Name="D1G1" ShowGridLines="False" DockPanel.Dock="Top">

        <Grid.RowDefinitions>
            <RowDefinition Height="30"/>
        </Grid.RowDefinitions>

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

        <Label Content="Toppie" Grid.Column="1" Grid.Row="0" />
    </Grid>

    <Grid Name="D1G2" ShowGridLines="False" DockPanel.Dock="Bottom">

        <Grid.RowDefinitions>
            <RowDefinition Height="30"/>
        </Grid.RowDefinitions>

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

        <Label Content="Bottom" Grid.Column="1" Grid.Row="0" />
    </Grid>

    <Grid Name="D1G3" ShowGridLines="False" DockPanel.Dock="Top">

        <Grid.RowDefinitions>
            <RowDefinition Height="30"/>
        </Grid.RowDefinitions>

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

        <GridSplitter HorizontalAlignment="Right" 
          VerticalAlignment="Stretch" 
          Grid.Column="1" ResizeBehavior="PreviousAndNext"
          Width="2" Background="#FFBCBCBC"/>

        <DockPanel Name="dockPanel2" DockPanel.Dock="Left" Grid.Column="0">
            <Grid Name="D2G1" ShowGridLines="False" DockPanel.Dock="Top">

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

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

                <GridSplitter Grid.Row="1" ResizeBehavior="PreviousAndNext" HorizontalAlignment="Stretch" VerticalAlignment="Center" Background="#FFBCBCBC" Height="2"/>

                <Label Content="D2Row0" Grid.Row="0" />
                <!-- separator at Row1 -->
                <Label Content="D2Row2" Grid.Row="2" />
            </Grid>

        </DockPanel>

    </Grid>


</DockPanel>