Gridsplitter在水平

时间:2016-08-10 10:14:30

标签: c# row gridsplitter

我有一个模拟带有其他功能的打印预览的网格

<Grid Name="grdReport_RTF" Visibility="Visible">
    <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition Height="5" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <RichTextBox x:Name="rtbReport" Grid.Row="0" Margin="10"  BorderBrush="Gray" Background="White" Foreground="Black" IsEnabled="True" Padding="10" Style="{DynamicResource rtbStyleDocLocal}" />

    <GridSplitter Grid.Row="1" Height="5" HorizontalAlignment="Stretch" />

    <StackPanel Grid.Row="2" Orientation="Horizontal"  Margin="10" >
        ...
    </StackPanel>

    <TabControl Grid.Row="3" Background="Transparent" BorderBrush="Gainsboro" BorderThickness="3" Margin="10">
        <TabItem Name="tbiReports" BorderBrush="Red" Background="Transparent" >
            <DataGrid Name="dtgReports" Background="Green" Height="100" Margin="10" />
        </TabItem>
        <TabItem Name="tbiLastReport" BorderBrush="Red" Background="Transparent">
            <DataGrid Name="dtgLastReport" Background="Green" Height="100" Margin="10" />
        </TabItem>                      
    </TabControl>

</Grid>

所以无论我尝试什么,gridspliter都不显示也不起作用。

enter image description here

我已经取消了以下所有代码,并提供了here提供的代码,而且它一直躲藏起来

更新

我试图简化这一切。简而言之:

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

    <Border Grid.Column="0" Background="Transparent" BorderBrush="Gainsboro" BorderThickness="3" />
<GridSplitter Grid.Column="1" Width="10"/>
<Border Grid.Column="2" Background="Transparent"  BorderBrush="Gainsboro"  BorderThickness="3"  />
</Grid>

就像一个魅力。相反,以下内容不会:

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

    <Border Grid.Row="0" Background="Transparent" BorderBrush="Gainsboro" BorderThickness="3" />
    <GridSplitter Grid.Row="1" Height="10"/>
    <Border Grid.Row="2" Background="Transparent"  BorderBrush="Gainsboro"  BorderThickness="3"  />
</Grid>

那有什么不对?

1 个答案:

答案 0 :(得分:1)

通常情况下,GridSplitter元素应根据其大小比例自动选择其调整大小方向(如果Height < Width则向上 - 向下,如果Width < Height则向左 - 向右)。由于某种原因,这个逻辑可能不适用,然后需要明确指定调整大小方向。

<GridSplitter Grid.Row="1" Height="10" Width="100" ResizeDirection="Rows"/>

在此代码中,设置WidthHeight可确保分割器由于零大小而不会保持不可见,ResizeDirection确保支持正确的方向。

另一个可能派上用场的属性是ResizeBehavior="PreviousAndNext",以确保正确的行/列受到调整大小操作的影响。