私が使う <Separator />
私のフォームではありますが、色を変更する方法がわかりません。 Border
/Foreground
/Background
は存在しません。助けてください。
スタイルを使用する
<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>
セパレータは単なる境界要素であり、今では好きなように外観を変更できますか?
背景を設定できます。
<Separator Background="Red"/>
うーん...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>
次のコードを使用して、Separator
の色を設定できます。
<Separator BorderBrush="Red" BorderThickness="1"/>
BorderThickness
プロパティも適用する必要があることに注意してください。
または、Rectangle要素を使用することもできます。
<Rectangle HorizontalAlignment="Stretch" Fill="Blue" Height="2"/>
修正/整形する方がやや簡単です。