Styling and Appearance in WPF Range Slider (SfRangeSlider)

6 Feb 202524 minutes to read

SfRangeSlider makes it possible to change the appearance by providing certain properties.

InactiveTrackStyle

Modify the appearance of the inactive track using the InactiveTrackStyle property.

<Grid>
        <Grid.Resources>
            <ResourceDictionary>
                <Style x:Key="InactiveTrackStyle" TargetType="Rectangle">
                    <Setter Property="Height" Value="3" />
                    <Setter Property="Fill" Value="#a8a8a8" />
                    <Setter Property="RadiusX" Value="2" />
                    <Setter Property="RadiusY" Value="2" />
                </Style>
            </ResourceDictionary>
        </Grid.Resources>
        <editors:SfRangeSlider
            Width="300"
            InactiveTrackStyle="{StaticResource InactiveTrackStyle}"
            Maximum="100"
            Minimum="0" />
    </Grid>
Grid parentGrid = new Grid();

            Style inactiveTrackStyle = new Style(typeof(Rectangle));
            inactiveTrackStyle.Setters.Add(new Setter(Rectangle.FillProperty, new SolidColorBrush((Color)ColorConverter.ConvertFromString("#a8a8a8"))));
            inactiveTrackStyle.Setters.Add(new Setter(Rectangle.HeightProperty, (double)3));
            inactiveTrackStyle.Setters.Add(new Setter(Rectangle.RadiusXProperty, (double)2));
            inactiveTrackStyle.Setters.Add(new Setter(Rectangle.RadiusYProperty, (double)2));
            Resources.Add("inactiveTrackStyle", inactiveTrackStyle);

            SfRangeSlider rangeSlider = new SfRangeSlider()
            {
                Width = 300,
                Minimum = 0,
                Maximum = 100,
                InactiveTrackStyle = inactiveTrackStyle
            };

            parentGrid.Children.Add(rangeSlider);
            this.Content = parentGrid;

InactiveTrackStyle

ActiveTrackStyle

Modify the appearance of the active track by using the ActiveTrackStyle property.

<Grid>
        <Grid.Resources>
            <ResourceDictionary>
                <Style x:Key="InactiveTrackStyle" TargetType="Rectangle">
                    <Setter Property="Height" Value="3" />
                    <Setter Property="Fill" Value="#a8a8a8" />
                    <Setter Property="RadiusX" Value="2" />
                    <Setter Property="RadiusY" Value="2" />
                </Style>
                <Style x:Key="ActiveTrackStyle" TargetType="Rectangle">
                    <Setter Property="Height" Value="3" />
                    <Setter Property="Fill" Value="#505050" />
                </Style>
            </ResourceDictionary>
        </Grid.Resources>
        <editors:SfRangeSlider
            Width="300"
            ActiveTrackStyle="{StaticResource ActiveTrackStyle}"
            InactiveTrackStyle="{StaticResource InactiveTrackStyle}"
            Maximum="100"
            Minimum="0"
            RangeEnd="60"
            RangeStart="20"
            ShowRange="True" />
    </Grid>
Grid parentGrid = new Grid();

            Style inactiveTrackStyle = new Style(typeof(Rectangle));
            inactiveTrackStyle.Setters.Add(new Setter(Rectangle.FillProperty, new SolidColorBrush((Color)ColorConverter.ConvertFromString("#a8a8a8"))));
            inactiveTrackStyle.Setters.Add(new Setter(Rectangle.HeightProperty, (double)3));
            inactiveTrackStyle.Setters.Add(new Setter(Rectangle.RadiusXProperty, (double)2));
            inactiveTrackStyle.Setters.Add(new Setter(Rectangle.RadiusYProperty, (double)2));
            Resources.Add("inactiveTrackStyle", inactiveTrackStyle);

            Style activeTrackStyle = new Style(typeof(Rectangle));
            activeTrackStyle.Setters.Add(new Setter(Rectangle.FillProperty, new SolidColorBrush((Color)ColorConverter.ConvertFromString("#505050"))));
            activeTrackStyle.Setters.Add(new Setter(Rectangle.HeightProperty, (double)3));
            Resources.Add("activeTrackStyle", activeTrackStyle);

            SfRangeSlider rangeSlider = new SfRangeSlider()
            {
                Width = 300,
                Minimum = 0,
                Maximum = 100,
                ShowRange = true,
                RangeStart = 20,
                RangeEnd = 60,
                ActiveTrackStyle = activeTrackStyle,
                InactiveTrackStyle = inactiveTrackStyle
            };

            parentGrid.Children.Add(rangeSlider);
            this.Content = parentGrid;

ActiveTrackStyle

ThumbStyle

Modify the appearance of the thumb by using the ThumbStyle property.

<Grid>
        <Grid.Resources>
            <ResourceDictionary>
                <Style x:Key="InactiveTrackStyle" TargetType="Rectangle">
                    <Setter Property="Height" Value="3" />
                    <Setter Property="Fill" Value="#a8a8a8" />
                    <Setter Property="RadiusX" Value="2" />
                    <Setter Property="RadiusY" Value="2" />
                </Style>
                <Style x:Key="ActiveTrackStyle" TargetType="Rectangle">
                    <Setter Property="Height" Value="3" />
                    <Setter Property="Fill" Value="#505050" />
                </Style>
                <Style x:Key="ThumbStyle" TargetType="Thumb">
                    <Setter Property="Width" Value="13" />
                    <Setter Property="Height" Value="13" />
                    <Setter Property="Background" Value="#0095ff" />
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="Thumb">
                                <Border
                                    x:Name="ThumbBorder"
                                    Background="{TemplateBinding Background}"
                                    BorderBrush="{TemplateBinding BorderBrush}"
                                    CornerRadius="12" />
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </ResourceDictionary>
        </Grid.Resources>
        <editors:SfRangeSlider
            Width="300"
            ActiveTrackStyle="{StaticResource ActiveTrackStyle}"
            InactiveTrackStyle="{StaticResource InactiveTrackStyle}"
            Maximum="100"
            Minimum="0"
            RangeEnd="60"
            RangeStart="20"
            ShowRange="True"
            ThumbStyle="{StaticResource ThumbStyle}" />
    </Grid>
Grid parentGrid = new Grid();

            Style inactiveTrackStyle = new Style(typeof(Rectangle));
            inactiveTrackStyle.Setters.Add(new Setter(Rectangle.FillProperty, new SolidColorBrush((Color)ColorConverter.ConvertFromString("#a8a8a8"))));
            inactiveTrackStyle.Setters.Add(new Setter(Rectangle.HeightProperty, (double)3));
            inactiveTrackStyle.Setters.Add(new Setter(Rectangle.RadiusXProperty, (double)2));
            inactiveTrackStyle.Setters.Add(new Setter(Rectangle.RadiusYProperty, (double)2));
            Resources.Add("inactiveTrackStyle", inactiveTrackStyle);

            Style activeTrackStyle = new Style(typeof(Rectangle));
            activeTrackStyle.Setters.Add(new Setter(Rectangle.FillProperty, new SolidColorBrush((Color)ColorConverter.ConvertFromString("#505050"))));
            activeTrackStyle.Setters.Add(new Setter(Rectangle.HeightProperty, (double)3));
            Resources.Add("activeTrackStyle", activeTrackStyle);

            ControlTemplate template = new ControlTemplate(typeof(Thumb));
            FrameworkElementFactory elemFactory = new FrameworkElementFactory(typeof(Border));
            elemFactory.Name = "Border";
            elemFactory.SetValue(Border.CornerRadiusProperty, new CornerRadius(12));
            elemFactory.SetValue(Border.BackgroundProperty, new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0095ff")));
            elemFactory.SetValue(Border.BorderBrushProperty, new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0095ff")));
            template.VisualTree = elemFactory;
            

            Style thumbStyle = new Style(typeof(Thumb));
            thumbStyle.Setters.Add(new Setter(Thumb.BackgroundProperty, new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0095ff"))));
            thumbStyle.Setters.Add(new Setter(Thumb.HeightProperty, (double)13));
            thumbStyle.Setters.Add(new Setter(Thumb.WidthProperty, (double)13));
            thumbStyle.Setters.Add(new Setter(Thumb.TemplateProperty, template));
            Resources.Add("thumbStyle", thumbStyle);

            SfRangeSlider rangeSlider = new SfRangeSlider()
            {
                Width = 300,
                Minimum = 0,
                Maximum = 100,
                ShowRange = true,
                RangeStart = 20,
                RangeEnd = 60,
                ActiveTrackStyle = activeTrackStyle,
                InactiveTrackStyle = inactiveTrackStyle,
                ThumbStyle = thumbStyle
            };

            parentGrid.Children.Add(rangeSlider);
            this.Content = parentGrid;

ThumbStyle

Tick Customization

Modify the appearance of the ticks by using the following properties:

  • TickStroke
  • ActiveTickStroke
  • TickLength
  • TickStrokeThickness
  • MinorTickStroke
  • ActiveMinorTickStroke
  • MinorTickLength
  • MinorTickStrokeThickness

TickStroke

Use the TickStroke property, to change the color of major ticks.

<editors:SfRangeSlider
            Width="300"
            Maximum="100"
            Minimum="0"
            RangeEnd="60"
            RangeStart="20"
            ShowRange="True"
            TickFrequency="10"
            TickPlacement="BottomRight"
            TickStroke="#FF0000" />
    </Grid>
Grid parentGrid = new Grid();
            SfRangeSlider rangeSlider = new SfRangeSlider()
            {
                Width = 300,
                Maximum = 100,
                Minimum = 0,
                RangeEnd = 60,
                RangeStart = 20,
                ShowRange = true,
                TickFrequency = 10,
                TickPlacement = Syncfusion.Windows.Controls.Input.TickPlacement.BottomRight,
                TickStroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF0000"))
            };

            parentGrid.Children.Add(rangeSlider);
            this.Content = parentGrid;

TickStroke

ActiveTickStroke

Use the ActiveTickStroke property, to change the active major ticks color.

<editors:SfRangeSlider
            Width="300"
            Maximum="100"
            Minimum="0"
            RangeEnd="60"
            RangeStart="20"
            ShowRange="True"
            TickFrequency="10"
            TickPlacement="BottomRight"
            TickStroke="#FF0000" 
            ActiveTickStroke="#02C9F3"/>
    </Grid>
Grid parentGrid = new Grid();
            SfRangeSlider rangeSlider = new SfRangeSlider()
            {
                Width = 300,
                Maximum = 100,
                Minimum = 0,
                RangeEnd = 60,
                RangeStart = 20,
                ShowRange = true,
                TickFrequency = 10,
                TickPlacement = Syncfusion.Windows.Controls.Input.TickPlacement.BottomRight,
                TickStroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF0000")),
                ActiveTickStroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#02C9F3"))
            };

            parentGrid.Children.Add(rangeSlider);
            this.Content = parentGrid;

ActiveTickStroke

TickLength

Use the TickLength property, to change the height of the major ticks.

<Grid>
        <editors:SfRangeSlider
            Width="300"
            Maximum="100"
            Minimum="0"
            RangeEnd="60"
            RangeStart="20"
            ShowRange="True"
            TickLength="8"
            TickFrequency="10"
            TickPlacement="BottomRight"
            TickStroke="#FF0000" />
    </Grid>
Grid parentGrid = new Grid();
            SfRangeSlider rangeSlider = new SfRangeSlider()
            {
                Width = 300,
                Maximum = 100,
                Minimum = 0,
                RangeEnd = 60,
                RangeStart = 20,
                ShowRange = true,
                TickFrequency = 10,
                TickLength = 8,
                TickPlacement = Syncfusion.Windows.Controls.Input.TickPlacement.BottomRight,
                TickStroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF0000"))
            };

            parentGrid.Children.Add(rangeSlider);
            this.Content = parentGrid;

TickLength

TickStrokeThickness

Use the TickStrokeThickness property, to change the thickness of the major ticks.

<Grid>
        <editors:SfRangeSlider
            Width="300"
            Maximum="100"
            Minimum="0"
            RangeEnd="60"
            RangeStart="20"
            ShowRange="True"
            TickFrequency="10"
            TickLength="8"
            TickPlacement="BottomRight"
            TickStroke="#FF0000"
            TickStrokeThickness="2" />
    </Grid>
Grid parentGrid = new Grid();
            SfRangeSlider rangeSlider = new SfRangeSlider()
            {
                Width = 300,
                Maximum = 100,
                Minimum = 0,
                RangeEnd = 60,
                RangeStart = 20,
                ShowRange = true,
                TickFrequency = 10,
                TickLength = 8,
                TickStrokeThickness = 2,
                TickPlacement = Syncfusion.Windows.Controls.Input.TickPlacement.BottomRight,
                TickStroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF0000"))
            };

            parentGrid.Children.Add(rangeSlider);
            this.Content = parentGrid;

TickStrokeThickness

MinorTickStroke

Use the MinorTickStroke property, to change the minor ticks color.

<editors:SfRangeSlider
            Width="300"
            Maximum="100"
            Minimum="0"
            RangeEnd="60"
            RangeStart="20"
            ShowRange="True"
            TickFrequency="10"
            MinorTickFrequency="3"
            TickPlacement="BottomRight"
            MinorTickStroke ="#FF0000" />
    </Grid>
Grid parentGrid = new Grid();
            SfRangeSlider rangeSlider = new SfRangeSlider()
            {
                Width = 300,
                Maximum = 100,
                Minimum = 0,
                RangeEnd = 60,
                RangeStart = 20,
                ShowRange = true,
                TickFrequency = 10,
                MinorTickFrequency=3,
                TickPlacement = Syncfusion.Windows.Controls.Input.TickPlacement.BottomRight,
                MinorTickStroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF0000"))
            };

            parentGrid.Children.Add(rangeSlider);
            this.Content = parentGrid;

MinorTickStroke

ActiveMinorTickStroke

Use the ActiveMinorTickStroke property, to change the color of the active minor ticks.

<editors:SfRangeSlider
            Width="300"
            Maximum="100"
            Minimum="0"
            RangeEnd="60"
            RangeStart="20"
            ShowRange="True"
            TickFrequency="10"
            MinorTickFrequency="3"
            TickPlacement="BottomRight"
            ActiveMinorTickStroke ="#FF0000" />
    </Grid>
Grid parentGrid = new Grid();
            SfRangeSlider rangeSlider = new SfRangeSlider()
            {
                Width = 300,
                Maximum = 100,
                Minimum = 0,
                RangeEnd = 60,
                RangeStart = 20,
                ShowRange = true,
                TickFrequency = 10,
                MinorTickFrequency=3,
                TickPlacement = Syncfusion.Windows.Controls.Input.TickPlacement.BottomRight,
                ActiveMinorTickStroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF0000"))
            };

            parentGrid.Children.Add(rangeSlider);
            this.Content = parentGrid;

ActiveMinorTickStroke

MinorTickLength

Use the MinorTickLength property, to change the height of the minor ticks.

<Grid>
        <editors:SfRangeSlider
            Width="300"
            Maximum="100"
            Minimum="0"
            RangeEnd="60"
            RangeStart="20"
            ShowRange="True"
            MinorTickLength ="6"
            TickLength ="10"
            TickFrequency="10"
            MinorTickFrequency="2"
            TickPlacement="BottomRight" />
    </Grid>
Grid parentGrid = new Grid();
            SfRangeSlider rangeSlider = new SfRangeSlider()
            {
                Width = 300,
                Maximum = 100,
                Minimum = 0,
                RangeEnd = 60,
                RangeStart = 20,
                ShowRange = true,
                MinorTickLength = 6,
                TickLength = 10,
                TickFrequency= 10,
                MinorTickFrequency= 2,
                TickPlacement = Syncfusion.Windows.Controls.Input.TickPlacement.BottomRight
            };

            parentGrid.Children.Add(rangeSlider);
            this.Content = parentGrid;

MinorTickLength

MinorTickStrokeThickness

Use the MinorTickStrokeThickness property, to change the thickness of the minor ticks.

<Grid>
        <editors:SfRangeSlider
            Width="300"
            Maximum="100"
            Minimum="0"
            RangeEnd="60"
            RangeStart="20"
            ShowRange="True"
            TickFrequency="10"
            MinorTickFrequency="2"
            TickLength="8"
            MinorTickLength="5"
            TickPlacement="BottomRight"
            TickStroke="#FF0000"
            MinorTickStroke="#FF0000"
            ActiveTickStroke="#02C9F3"
            ActiveMinorTickStroke="#02C9F3"
            MinorTickStrokeThickness ="2" />
    </Grid>
Grid parentGrid = new Grid();
            SfRangeSlider rangeSlider = new SfRangeSlider()
            {
                Width = 300,
                Maximum = 100,
                Minimum = 0,
                RangeEnd = 60,
                RangeStart = 20,
                ShowRange = true,
                TickFrequency = 10,
                MinorTickFrequency= 2,
                TickLength = 8,
                MinorTickStrokeThickness = 2,
                MinorTickLength= 5,
                TickPlacement = Syncfusion.Windows.Controls.Input.TickPlacement.BottomRight,
                TickStroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF0000"))
                MinorTickStroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF0000"))
                ActiveMinorTickStroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#02C9F3"))
                ActiveTickStroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#02C9F3"))
            };

            parentGrid.Children.Add(rangeSlider);
            this.Content = parentGrid;

MinorTickStrokeThickness

Value label customization

Customize the value label using the TickBarItem style.

<Grid>
        <Grid.Resources>
            <ResourceDictionary>
                <Style TargetType="editors:TickBarItem">
                    <Setter Property="FontSize" Value="12" />
                    <Setter Property="Foreground" Value="Red" />
                </Style>
            </ResourceDictionary>
        </Grid.Resources>
        <editors:SfRangeSlider
            Width="300"
            Maximum="100"
            Minimum="0"
            RangeEnd="60"
            RangeStart="20"
            ShowRange="True"
            ShowValueLabels="True"
            TickFrequency="10"
            TickLength="4"
            TickPlacement="BottomRight"
            TickStroke="#505050"
            TickStrokeThickness="1" />
    </Grid>
Grid parentGrid = new Grid();
            SfRangeSlider rangeSlider = new SfRangeSlider()
            {
                Width = 300,
                Maximum = 100,
                Minimum = 0,
                RangeEnd = 60,
                ShowValueLabels = true,
                RangeStart = 20,
                ShowRange = true,
                TickFrequency = 10,
                TickLength = 4,
                TickStrokeThickness = 1,
                TickPlacement = Syncfusion.Windows.Controls.Input.TickPlacement.BottomRight,
                TickStroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#505050"))
            };

            parentGrid.Children.Add(rangeSlider);
            this.Content = parentGrid;

TickBarItem