代码之家  ›  专栏  ›  技术社区  ›  Nam G VU

如何更改WPF的颜色`<separator/>`?

  •  22
  • Nam G VU  · 技术社区  · 14 年前

    我用 <Separator /> 在我的形式,但不知道如何改变它的颜色。都不 Border / Foreground / Background 确实存在。请帮忙。

    5 回复  |  直到 6 年前
        1
  •  14
  •   rudigrobler    14 年前

    使用样式

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

    分隔符只是一个边框元素,现在您可以随意更改它的外观了吗?

        2
  •  61
  •   throop77    12 年前

    您可以设置背景:

    <Separator Background="Red"/>
    
        3
  •  22
  •   Drake    6 年前

    隐马尔可夫模型。。。我认为 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>
    
        4
  •  8
  •   Deruijter    12 年前

    或者,您可以选择使用矩形元素:

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

    修改/塑造稍微容易一些。

        5
  •  8
  •   Nic    9 年前

    你可以设置 Separator 使用此代码的颜色:

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

    注意, BorderThickness 属性也必须应用。