Как заставить GridSplitter перемещаться между крайностями - PullRequest
0 голосов
/ 11 июня 2010

У меня есть Gridsplitter в вертикальной сетке и в идеале, что бы видеть две кнопки в GridSplitter.Кнопка «вверх» автоматически переместит сплиттер в верхнее верхнее положение, а кнопка «вниз» переместит его полностью вниз.Однако GridSplitter не может содержать другие элементы.Есть какие-нибудь мысли по поводу этого?Я думал о том, чтобы просто сделать панель и затем поместить ее между двумя GridSplitters?

1 Ответ

1 голос
/ 12 июня 2010

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;
  ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...