Как изменить цвет WPF ` `?
Я использую <Separator />
в моей форме, но не знаю, как изменить ее цвет. Никто из Border
/Foreground
/Background
существует. Пожалуйста, помогите.
5 ответов
использование стилей
<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
является одним из немногих элементов, которые не будут работать с использованием простого стиля. На основе документации 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>
в качестве альтернативы вы можете использовать элемент прямоугольника:
<Rectangle HorizontalAlignment="Stretch" Fill="Blue" Height="2"/>
несколько легче изменить / shape.
вы можете установить Separator
цвет с помощью этого кода:
<Separator BorderBrush="Red" BorderThickness="1"/>
обратите внимание, что BorderThickness
свойство также должно применяться.