如何在WPF中更改滑块选择的颜色?

5
我有一个 slider。有没有办法将选择区域的蓝色更改为其他颜色(例如黑色)?

enter image description here

2个回答

9

修改系统颜色不适用于自定义模板。

将“IsSelectionRangeEnabled”设置为true,“SelectionStart”设置为起始值,“SelectionEnd”设置为结束值。如果想让其自动化,可以将“SelectionEnd”绑定到“Value”上...

<Style x:Key="SliderStyle" TargetType="{x:Type Slider}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Slider}">
                <Grid VerticalAlignment="Center">
                    <Border x:Name="borderBackground" Margin="6,0" Height="4" Background="Gray" />
                    <Canvas Margin="0,-4,0,0" VerticalAlignment="Center">
                        <Border x:Name="PART_SelectionRange" HorizontalAlignment="Left" Height="4" Background="{TemplateBinding Foreground}" />
                    </Canvas>
                    <Track x:Name="PART_Track">
                        <Track.Thumb>
                            <Thumb Width="10" Height="20" />
                        </Track.Thumb>
                    </Track>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="IsSelectionRangeEnabled" Value="True" />
    <Setter Property="SelectionStart" Value="{Binding Minimum, RelativeSource={RelativeSource Self}}" />
    <Setter Property="SelectionEnd" Value="{Binding Value, RelativeSource={RelativeSource Self}}" />
    <Setter Property="Foreground" Value="Red" />
</Style>

我不明白这如何允许设置自定义颜色。 - iheanyi
要设置自定义颜色,您需要指定一个自定义模板。请参见更新的答案(简化以便专注于颜色)。 - Nick
谢谢Nick。我很感激你回来编辑这个——即使已经过去3年了。 - iheanyi

8
您可以覆盖默认的SystemColors来更改选择区域的颜色。
    <Slider  Margin="0,10,0,0" Width="287" Value="6" IsSelectionRangeEnabled="True"  SelectionEnd="6" >
        <Slider.Resources>
            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Black" />
            <SolidColorBrush x:Key="{x:Static SystemColors.ControlDarkDarkBrushKey}" Color="Silver" />
        </Slider.Resources>
    </Slider>

结果:

在此输入图像描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接