GridSplitters之间出现不需要的间隙

时间:2014-04-09 15:38:22

标签: c# wpf xaml grid gridsplitter

我想防止在我的wpf窗口中出现间隙而不修改剩余分割器的行为。请注意,最长的垂直分离器应该能够向左滑动;我只是不希望移动时出现间隙。 GridSplitters中添加了一条注释,构成了意外的差距。如何防止差距出现?我的XAML代码如下:

 <Window x:Class="MyAdvancedGrid.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" 
            Height="480" 
            Width="600">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition Height="250"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="2*"/>
                <ColumnDefinition Width="auto"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>  
            <GridSplitter Grid.Row="0"
                          Grid.Column="2" 
                          VerticalAlignment="Bottom"
                          HorizontalAlignment="Stretch"
                          Grid.ColumnSpan="2"
                          Background="Black"
                          Height="5" /> <!-- A gap involves this splitter.-->
            <GridSplitter Grid.Column="1"
                          HorizontalAlignment="Left"
                          Grid.RowSpan="2"
                          Background="Black"
                          VerticalAlignment="Stretch"
                          Width="5"/> <!-- A gap appears between this and the splitter above when this vertical splitter is moved to the left.-->
            <GridSplitter Grid.Column="2"
                          Grid.Row="1"
                          Grid.ColumnSpan="1"
                          HorizontalAlignment="Right"
                          Grid.RowSpan="1"
                          Background="Black"
                          VerticalAlignment="Stretch"
                          Width="5"/>
        </Grid>
    </Window>

1 个答案:

答案 0 :(得分:0)

因为您的水平分割器只跨越2列。

如果您希望水平分割器跨越所有3列(高竖直分割器的左侧),则应将其放在第1列中,并使ColumnSpan为3。

 <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition Height="250"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="2*"/>
            <ColumnDefinition Width="auto"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>  
        <GridSplitter Grid.Row="0"
                      Grid.Column="1" 
                      VerticalAlignment="Bottom"
                      HorizontalAlignment="Stretch"
                      Grid.ColumnSpan="3"
                      Background="Black"
                      Height="5" /> <!-- see changes above.-->
        <GridSplitter Grid.Column="1"
                      HorizontalAlignment="Left"
                      Grid.RowSpan="2"
                      Background="Black"
                      VerticalAlignment="Stretch"
                      Width="5"/> 
        <GridSplitter Grid.Column="2"
                      Grid.Row="1"
                      Grid.ColumnSpan="1"
                      HorizontalAlignment="Right"
                      Grid.RowSpan="1"
                      Background="Black"
                      VerticalAlignment="Stretch"
                      Width="5"/>
    </Grid>

enter image description here