我正在创建一个新的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>
我尝试用我的代码进行以下操作:
将ZIndex = 1分配给网格拆分器,使其与LeftDockPanel共享列
为拆分器显式指定一列,为其分配宽度
确保GridSplitter是添加到网格的最后一个控件
2、3和4的组合-如代码中所示。
将鼠标悬停在适当的区域时,光标的确会更改以显示gridSplitter,但它永远不可见。甚至调整大小的操作都按预期工作。
我看不见GridSplitter不可见或该怎么做?
答案 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>