2010-10-22 15 views

risposta

14

utilizzare gli stili

<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> 

Un seperator è solo un elemento di confine e ora è possibile cambiare il suo aspetto come più ti piace?

+0

Non funziona con i separatori della barra degli strumenti, controllare la risposta da @ code4life di seguito. – Benlitz

18

Hmm ... Penso che lo Separator sia uno dei pochi elementi che non funzionerà con uno stile semplice. In base alla documentazione MSDN, è necessario specificare lo SeparatorStyleKey.

Per esempio per un ToolBar si dovrebbe fare questo:

<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 per essere l'unica risposta che funziona con un separatore della barra degli strumenti. Nessuna delle altre risposte funziona. – Benlitz

+0

La denominazione della chiave è importante. – code4life

+0

BTW, ecco un articolo che spiega perché, e anche menzionare come stile l'altro tipo di separatori, vale a dire i separatori di MenuItem: http://devlicio.us/blogs/christopher_bennage/archive/2008/06/19/styling-separators -in-wpf.aspx – Benlitz

7

In alternativa si potrebbe scegliere di utilizzare un elemento di rettangolo:

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

E 'un po' più facile da modificare/forma.

+0

C'è un modo per rendere il rettangolo non selezionabile nel menu contestuale? La cosa bella del separatore è non è possibile evidenziarlo, non è un vero figlio MenuItem – goldenratio

51

È possibile impostare lo sfondo:

<Separator Background="Red"/> 
5

è possibile impostare il colore 's il Separator utilizzando questo codice:

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

notare che la proprietà BorderThickness deve essere applicata anche.

Problemi correlati