2010-10-22 4 views

Répondre

14

Utilisez les styles

<Style x:Key="MySeparatorStyle" TargetType="{x:Type Separator}"> 
     <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}"/> 
     <Setter Property="Margin" Value="0,2,0,2"/> 
     <Setter Property="Focusable" Value="false"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Separator}"> 
        <Border 
         BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}" 
         Background="{TemplateBinding Background}" 
         Height="1" 
         SnapsToDevicePixels="true"/> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

A seperator est juste un élément de frontière et maintenant vous pouvez changer son apparence comme vous le souhaitez?

+0

Il ne fonctionne pas avec les séparateurs de barre d'outils, vérifiez la réponse de @ code4life ci-dessous. – Benlitz

18

Hmm ... Je pense que le Separator est l'un des rares éléments qui ne fonctionnera pas en utilisant un style simple. Basé sur la documentation MSDN, vous devez spécifier le SeparatorStyleKey.

Par exemple, pour un ToolBar vous faire:

<Style x:Key="{x:Static ToolBar.SeparatorStyleKey" 
    TargetType="{x:Type Separator}"> 
    <Setter Property="Background" 
     Value="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}"/> 
    <Setter Property="Margin" Value="0,2,0,2"/> 
    <Setter Property="Focusable" Value="false"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Separator}"> 
       <Border 
        BorderBrush="{TemplateBinding BorderBrush}" 
        BorderThickness="{TemplateBinding BorderThickness}" 
        Background="{TemplateBinding Background}" 
        Height="1" 
        SnapsToDevicePixels="true"/> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

+1 pour être la seule réponse qui fonctionne avec un séparateur de barre d'outils. Aucune des autres réponses ne fonctionne. – Benlitz

+0

La dénomination de clé est importante. – code4life

+0

BTW, voici un article expliquant pourquoi, et mentionnant aussi comment styliser l'autre type de séparateurs, à savoir les séparateurs de MenuItem: http://devlicio.us/blogs/christopher_bennage/archive/2008/06/19/styling-separators -in-wpf.aspx – Benlitz

7

Sinon, vous pouvez choisir d'utiliser un élément Rectangle:

<Rectangle HorizontalAlignment="Stretch" Fill="Blue" Height="2"/>

Il est un peu plus facile de modifier/forme.

+0

Y at-il un moyen de rendre le rectangle non sélectionnable dans le menu contextuel? La bonne chose à propos du séparateur est vous ne pouvez pas le mettre en évidence, ce n'est pas un vrai MenuItem enfant – goldenratio

51

Vous pouvez définir l'arrière-plan:

<Separator Background="Red"/> 
5

vous pouvez définir la couleur de Separator en utilisant ce code:

<Separator BorderBrush="Red" BorderThickness="1"/>

NOTE que la propriété BorderThickness doit être appliqué aussi.

Questions connexes