WPF:GridSplitter不可见,但按预期运行

时间:2019-01-18 06:25:08

标签: wpf xaml gridsplitter

我正在创建一个新的WPF应用程序,其中主窗口在停靠面板内部有一个网格。网格将具有3列和1行,其中中间一列专用于GridSplitter。其他两列各有一个停靠面板,该面板将具有任何内容(将在运行时创建)。我的问题是,尽管有多种方法可以使GridSplitter可见,但我一直没有成功。

我什至遵循了Microsoft文档的“操作方法”页面中给出的提示,但没有实现: https://docs.microsoft.com/en-us/dotnet/framework/wpf/controls/how-to-make-sure-that-a-gridsplitter-is-visible

这是我的XAML代码:

<Window
...
Height="600"
Width="650">

    <DockPanel LastChildFill="True">

         <Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="10"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>

            <DockPanel Name="LeftDockPanel" Grid.Column="0" LastChildFill="True" Width="350" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="LightCyan">

            </DockPanel>

            <DockPanel Name="RightDockPanel" Grid.Column="2" LastChildFill="True" Width="300" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="Azure">

            </DockPanel>

            <GridSplitter Width="5" Background="Red" Grid.Column="1" BorderBrush="Red"
                          VerticalAlignment="Stretch" HorizontalAlignment="Center"
                          Margin="3,0,3,0" ResizeBehavior="PreviousAndNext" Panel.ZIndex="1"/>

        </Grid>

    </DockPanel>

</Window>

我尝试用我的代码进行以下操作:

  1. 将ZIndex = 1分配给网格拆分器,使其与LeftDockPanel共享列

  2. 为拆分器显式指定一列,为其分配宽度

  3. 确保GridSplitter是添加到网格的最后一个控件

  4. 2、3和4的组合-如代码中所示。

将鼠标悬停在适当的区域时,光标的确会更改以显示gridSplitter,但它永远不可见。甚至调整大小的操作都按预期工作。

我看不见GridSplitter不可见或该怎么做?

1 个答案:

答案 0 :(得分:0)

您的问题不可复制。也许您在某处定义了一个隐式Style。尝试将Template属性设置为自定义模板:

<GridSplitter Width="5" Background="Red" Grid.Column="1" BorderBrush="Red"
              VerticalAlignment="Stretch" HorizontalAlignment="Center"
              Margin="3,0,3,0" ResizeBehavior="PreviousAndNext">
    <GridSplitter.Template>
        <ControlTemplate TargetType="{x:Type GridSplitter}">
            <Border BorderBrush="{TemplateBinding BorderBrush}" 
                    BorderThickness="{TemplateBinding BorderThickness}" 
                    Background="{TemplateBinding Background}"/>
        </ControlTemplate>
    </GridSplitter.Template>
</GridSplitter>