Ich benutze <Separator />
in meiner Form, weiß aber nicht, wie ich die Farbe ändern soll. Keines von Border
/Foreground
/Background
existiert. Bitte helfen.Wie ändert man die Farbe eines WPF `<Separator />`?
Antwort
Verwenden Arten
<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 ist nur ein Element Grenze und jetzt können Sie das Aussehen Sie irgendeine Art und Weise ändern?
Hmm ... Ich denke, die Separator
ist eines der wenigen Elemente, die nicht mit einem einfachen Stil arbeiten. Basierend auf der MSDN-Dokumentation müssen Sie SeparatorStyleKey
angeben.
Zum Beispiel für ein ToolBar
Sie dies tun würden:
<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 für die einzige Antwort, die mit einem Symbolleistentrennzeichen funktioniert. Keine der anderen Antworten funktioniert. – Benlitz
Die Tastenbenennung ist wichtig. – code4life
Übrigens, hier ist ein Artikel, der erklärt, warum, und auch zu erwähnen, wie man die andere Art von Trennzeichen style, nämlich die Trennzeichen von MenuItem: http://devlicio.us/blogs/christopher_bennage/archive/2008/06/19/styling-separators -in-wpf.aspx – Benlitz
Alternativ können Sie wählen, ein Rectangle-Element verwenden:
<Rectangle HorizontalAlignment="Stretch" Fill="Blue" Height="2"/>
Es ist etwas leichter/Form zu ändern.
Gibt es eine Möglichkeit, das Rechteck im Kontextmenü nicht auswählbar zu machen? Das Schöne am Separator ist Sie können es nicht markieren, es ist kein echtes MenuItem-Kind – goldenratio
Sie können den Hintergrund gesetzt:
<Separator Background="Red"/>
Sie können die Separator
‚s Farbe mit diesem Code festgelegt:
<Separator BorderBrush="Red" BorderThickness="1"/>
Hinweis, dass die BorderThickness
Eigenschaft muss auch angewendet werden.
Es funktioniert nicht mit Symbolleistentrennzeichen, überprüfen Sie die Antwort von @ code4life unten. – Benlitz