如何设置滑块样式?

How to style the slider?

我发现 this tutorial...但是 Imma noobie 还不知道如何将它应用到我的滑块上。 我现在有这个:

<Slider Grid.Column="1" Orientation="Vertical" Margin="6 0 0 0">
    <Slider.Background>
        <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
            <GradientStop Color="#ff0000" Offset="0.0" />
            <GradientStop Color="#ffff00" Offset="0.2" />
            <GradientStop Color="#00ff00" Offset="0.4" />
            <GradientStop Color="#00ffff" Offset="0.6" />
            <GradientStop Color="#0000ff" Offset="0.8" />
            <GradientStop Color="#ff00ff" Offset="1.0" />
        </LinearGradientBrush>
    </Slider.Background>
    <Slider.Resources>
        <ResourceDictionary>
            <ResourceDictionary.ThemeDictionaries>
                <ResourceDictionary x:Key="Light">
                 // As I understood I can change styles here
                </ResourceDictionary>
            </ResourceDictionary.ThemeDictionaries>
        </ResourceDictionary>
    </Slider.Resources>
</Slider>

但我不知道如何使 Slider 具有所有状态和主题的渐变背景,即总是,它不会在指针悬停时变黑等等?

任何人都可以 post 举个例子吗?

已添加
这是一个很难的问题,没有人知道吗?还是我问的不好?那么请写信给我,我会添加详细信息。因为我真的找不到解决办法。

有一篇关于 Slider 控件的默认样式和模板的文档。您可以修改这些资源和默认的 ControlTemplate 以赋予控件独特的外观。请参考Slider styles and templates.

在默认样式中定义了一个名为VerticalTrackRectRectangle。它是Slider中的"line",属性绑定到Slider中的Background属性。所以你应该可以将 LinearGradientBrush 设置为 Slider.

Background 属性

如果要在 Slider 被按下和 PointerOver 时使用 LinearGradientBrushSliderBackground。从默认样式开始,它使用 SliderTrackFillPointerOver ThemeResource 在 PointerOver 中设置 FillVerticalTrackRect。并且它在 Pressed.

中使用 SliderTrackFillPressed ThemeResource

所以我们应该能够将 LinearGradientBrush 设置为 SliderTrackFillPressedSliderTrackFillPointerOver

例如:

<Page.Resources>
    <StaticResource x:Key="SliderTrackFillPressed" ResourceKey="MyLinearGradientBrush" />
    <StaticResource x:Key="SliderTrackFillPointerOver" ResourceKey="MyLinearGradientBrush" />
    <LinearGradientBrush x:Key="MyLinearGradientBrush" StartPoint="0.5,0" EndPoint="0.5,1">
        <GradientStop Color="#ff0000" Offset="0.0" />
        <GradientStop Color="#ffff00" Offset="0.2" />
        <GradientStop Color="#00ff00" Offset="0.4" />
        <GradientStop Color="#00ffff" Offset="0.6" />
        <GradientStop Color="#0000ff" Offset="0.8" />
        <GradientStop Color="#ff00ff" Offset="1.0" />
    </LinearGradientBrush>
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Slider Grid.Column="1" Orientation="Vertical" Margin="6 0 0 0" Background="{StaticResource MyLinearGradientBrush}">
    </Slider>
</Grid>