web-dev-qa-db-ja.com

WPF `<Separator />`の色を変更するにはどうすればよいですか?

私が使う <Separator />私のフォームではありますが、色を変更する方法がわかりません。 Border/Foreground/Backgroundは存在しません。助けてください。

27
Nam G VU

スタイルを使用する

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

セパレータは単なる境界要素であり、今では好きなように外観を変更できますか?

13
rudigrobler

背景を設定できます。

<Separator Background="Red"/>
62
throop77

うーん...Separatorは、単純なスタイルでは機能しない数少ない要素の1つだと思います。 MSDNのドキュメントに基づいて、SeparatorStyleKeyを指定する必要があります。

たとえば、ToolBarの場合、次のようにします。

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

次のコードを使用して、Separatorの色を設定できます。

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

BorderThicknessプロパティも適用する必要があることに注意してください。

10
sadovecki

または、Rectangle要素を使用することもできます。

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

修正/整形する方がやや簡単です。

8
Deruijter