Gridsplitter 仅在水平时不显示也不工作

Gridsplitter not showing nor working only when horizontal

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

<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 都不显示也不工作。

此外,我已经删除了下面的所有代码并放置了提供的代码 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>

这有什么问题吗?

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

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

在此代码中,设置 WidthHeight 可确保拆分器不会因大小为零而保持不可见状态,并且 ResizeDirection 可确保支持正确的方向。

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