2010-10-22 12 views

Odpowiedz

14

używać styli

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

SEPERATOR to tylko element granicy i teraz można zmienić jego wygląd, jak tylko chcesz?

+0

Nie działa z separatorami pasków narzędzi, sprawdź odpowiedź z @ code4life poniżej. – Benlitz

18

Hmm ... Myślę, że Separator jest jednym z niewielu elementów, które nie będą działać w prostym stylu. Na podstawie dokumentacji MSDN należy podać wartość SeparatorStyleKey.

Na przykład dla ToolBar byłoby to zrobić:

<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 za bycie jedyną odpowiedzią, która działa z separatorem pasków narzędzi. Żadna z pozostałych odpowiedzi nie działa. – Benlitz

+0

Kluczowe nazewnictwo jest ważne. – code4life

+0

BTW, oto artykuł wyjaśniający, dlaczego, a także wspominając o stylu innych separatorów, mianowicie separatory MenuItem: http://devlicio.us/blogs/christopher_bennage/archive/2008/06/19/styling-separators -in-wpf.aspx – Benlitz

7

Ewentualnie można zdecydować się na stosowanie elementu Prostokąt:

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

To nieco łatwiej zmodyfikować/kształt.

+0

Czy istnieje sposób na uniemożliwienie wyboru prostokąta w menu kontekstowym? Miłym zadaniem separatora jest nie możesz go podświetlić, to nie jest prawdziwe dziecko MenuItem – goldenratio

51

Można ustawić tło:

<Separator Background="Red"/> 
5

można ustawić kolor, Separator „s przy użyciu tego kodu:

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

pamiętać, że hotel BorderThickness należy stosować zbyt.