2010-06-11 5 views
0

J'ai un Gridsplitter dans une grille verticale et idéalement ce qui voudrait voir deux boutons dans le GridSplitter. Un bouton vers le haut déplacerait automatiquement le séparateur vers la position supérieure la plus haute et un bouton du bas la déplacerait complètement vers le bas. Cependant, GridSplitter ne peut pas contenir d'autres éléments. Des pensées sur un moyen de contourner cela? Je pensais juste faire un panneau et le prendre en sandwich entre deux GridSplitters?Comment faire pour déplacer GridSplitter entre les extrêmes

Répondre

1

GridSplitter hérite de contrôle, donc tout ce que vous devez faire est de définir un modèle pour ce qui comprend les deux boutons:

<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}" ... /> 

l'intérieur de vos gestionnaires d'événements, vous pouvez trouver le GridSplitter comme ceci:

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