Używam <Separator />
w moim formularzu, ale nie wiem, jak zmienić jego kolor. Nie istnieje żaden z//. Plese pomoc.Jak zmienić kolor WPF `<Separator />`?
Odpowiedz
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?
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>
+1 za bycie jedyną odpowiedzią, która działa z separatorem pasków narzędzi. Żadna z pozostałych odpowiedzi nie działa. – Benlitz
Kluczowe nazewnictwo jest ważne. – code4life
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
Ewentualnie można zdecydować się na stosowanie elementu Prostokąt:
<Rectangle HorizontalAlignment="Stretch" Fill="Blue" Height="2"/>
To nieco łatwiej zmodyfikować/kształt.
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
Można ustawić tło:
<Separator Background="Red"/>
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.
Nie działa z separatorami pasków narzędzi, sprawdź odpowiedź z @ code4life poniżej. – Benlitz