如何让GridSplitter在极端之间移动

时间:2010-06-11 18:56:50

标签: wpf

我在垂直网格中有一个Gridsplitter,理想情况下我想在GridSplitter中看到两个按钮。向上按钮会自动将分离器移动到最高位置,而向下按钮会将其一直向下移动。但是,GridSplitter不能包含其他项目。有什么想法绕过这个吗?我想过制作一个面板,然后将它夹在两个GridSplitters之间?

1 个答案:

答案 0 :(得分:1)

GridSplitter继承自Control,所以你需要做的就是为它定义一个包含两个按钮的模板:

<ControlTemplate x:Key="SplitterWithButtons" TargetType="{x:Type GridSplitter}">
  <Border BorderBrush="{TemplateBinding BorderBrush}"
          BorderThickness="{TemplateBinding BorderThickness}"
          Background="{TemplateBinding Background}">
    <DockPanel>
      <Button DockPanel.Dock="Left" Content="{StaticResource UpArrow}" Click="OnSplitterUpButton" />
      <Button DockPanel.Dock="Right" Content="{StaticResource DownArrow}" Click="OnSplitterDownButton" />
    </DockPanel>
  </Border>
</ControlTemplate>

...

<GridSplitter Template="{StaticResource SplitterWithButtons}" ... />

在事件处理程序中,您可以找到GridSplitter,如下所示:

private void OnSplitterUpButton(object sender, RoutedEventArgs e)
{
  var splitter = ((Button)sender).TemplatedParent as GridSplitter;
  ...
}