Je n'ai pas réussi à faire fonctionner la solution de John Bowen. On aurait dit que ça fonctionnait, mais il semblait que le séparateur n'avait qu'un pixel d'espace de saisie.
Je fini par faire ceci:
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Stackpanel Grid.Row="0"/>
<GridSplitter
Grid.Row="1"
HorizontalAlignment="Stretch"
BorderBrush="DarkGray"
Height="6"
Background="Transparent"
BorderThickness="0,1,0,0"
Margin="0,0,0,-4"/>
<Stackpanel Grid.Row="2"/>
</Grid>
Cela donne le séparateur 6 pixels de hauteur, mais montre que la ligne de bordure supérieure de 1 pixel. Vous utilisez une marge inférieure négative de ((Hauteur/2) - 1) afin de centrer cette ligne de marge supérieure au milieu de la rangée. L'arrière-plan est transparent sinon vous verrez 6 pixels de gris ou w/e la couleur par défaut est. Si vous creusez dans le modèle de contrôle de GridSplitter avec Blend, vous découvrirez qu'il s'agit simplement d'un Rectangle de style avec une bordure ou quelque chose comme ça.
C'est correct, mais j'ai dû changer le ZIndex du gridsplitter, parce que le côté droit a été caché par un DockPanel. – ErikTJ
Quel est le but de Margin = "- 3,0"? Vous voulez que le séparateur horizontal aligné à gauche dans la zone de 7 pixels au lieu de centré? –
Les marges négatives créent l'espace supplémentaire de chaque côté pour la bordure transparente de 3 px pour remplir la mise en page. Sans cela, le séparateur n'a que la colonne 1 px à afficher. –