Custom Slider
Learn creating a Custom Sliderusing Windows App SDK with this Tutorial
 
                                   
                                Custom Slider shows how to create a Style for a Slider using Windows App SDK.
Step 1
Follow Setup and Start on how to get Setup and Install what you need for Visual Studio 2022 and Windows App SDK.
 
                                             
                                             
                                             
                                            Step 2
 
                                            Step 3
                                        In the XAML for App.xaml below the Comment
                                        of <!-- Other app resources here --> type in the following XAML:
                                    
<Style x:Key="CustomSlider" TargetType="Slider">
    <Setter Property="Background" Value="LightSalmon"/>
    <Setter Property="BorderBrush" Value="Salmon"/>
    <Setter Property="BorderThickness" Value="2"/>
    <Setter Property="Foreground" Value="Gold"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Slider">
                <Grid Margin="{TemplateBinding Padding}">
                    <Grid.Resources>
                        <Style x:Key="SliderThumbStyle" TargetType="Thumb">
                            <Setter Property="BorderThickness" Value="2"/>
                            <Setter Property="BorderBrush" Value="Goldenrod"/>
                            <Setter Property="Foreground" Value="Gold"/>
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="Thumb">
                                        <Ellipse StrokeThickness="2" 
                                        Stroke="{TemplateBinding BorderBrush}" 
                                        Fill="{TemplateBinding Foreground}"/>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </Grid.Resources>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                    <Grid x:Name="SliderContainer" 
                    Background="Transparent" Grid.Row="1">
                        <!-- Horizontal Template -->
                        <!-- Vertical Template -->
                                    
                    </Grid>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
                                    
                                        This XAML is part of a Style of CustomSlider that will be used to target a Slider 
                                        which will contain a Template for when it is Horizontal or Vertical for the Custom Slider.
                                    
Step 4
                                        While still the XAML for App.xaml below the Comment
                                        of <!-- Horizontal Template --> type in the following XAML:
                                    
<Grid x:Name="HorizontalTemplate">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="17"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="17"/>
    </Grid.RowDefinitions>
    <Rectangle x:Name="HorizontalTrackRect" 
    Grid.ColumnSpan="3" Fill="{TemplateBinding Background}" 
    Grid.Row="1" Height="10" RadiusX="5" RadiusY="5"/>
    <Rectangle x:Name="HorizontalDecreaseRect" 
    Fill="{TemplateBinding Background}" 
    Grid.Row="1" Height="10" RadiusX="5" RadiusY="5"/>
    <Rectangle x:Name="HorizontalBorder" 
    Grid.ColumnSpan="3" Grid.Row="1" 
    Stroke="{TemplateBinding BorderBrush}"
    StrokeThickness="{TemplateBinding BorderThickness}" 
    Height="10" RadiusX="5" RadiusY="5"/>
    <Thumb x:Name="HorizontalThumb" 
    AutomationProperties.AccessibilityView="Raw" 
    Background="{ThemeResource SliderThumbBackgroundThemeBrush}"
    Grid.Column="1" DataContext="{TemplateBinding Value}" 
    Grid.Row="1" Style="{StaticResource SliderThumbStyle}" 
    Height="25" Width="25"/>
</Grid>
                                    
                                        This XAML is for the Horizontal Template when the Slider is Horizontal for the Custom Slider.
                                    
Step 5
                                        Then in the XAML for App.xaml below the Comment
                                        of <!-- Vertical Template --> type in the following XAML:
                                    
<Grid x:Name="VerticalTemplate" Visibility="Collapsed">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="17"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="17"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <Rectangle x:Name="VerticalTrackRect" Grid.Column="1" 
    Fill="{TemplateBinding Background}" Grid.RowSpan="3" 
    Width="10" RadiusX="5" RadiusY="5"/>
    <Rectangle x:Name="VerticalDecreaseRect" Grid.Column="1" 
    Fill="{TemplateBinding Background}" Grid.Row="2"/>
    <Rectangle x:Name="VerticalBorder" Grid.RowSpan="3" 
    Grid.Column="1"  Stroke="{TemplateBinding BorderBrush}"
    StrokeThickness="{TemplateBinding BorderThickness}" 
    Width="10" RadiusX="5" RadiusY="5" />
    <Thumb x:Name="VerticalThumb" AutomationProperties.AccessibilityView="Raw" 
    Background="{ThemeResource SliderThumbBackgroundThemeBrush}"
    Grid.Column="1" DataContext="{TemplateBinding Value}" Grid.Row="1" 
    Style="{StaticResource SliderThumbStyle}" Height="25" Width="25"/>
</Grid>
                                    
                                        This XAML is for the Vertical Template when the Slider is Vertical for the Custom Slider.
                                    
Step 6
 
                                            Step 7
                                        In the XAML for MainWindow.xaml there will be some XAML for a StackPanel, this should be Removed:
                                    
<StackPanel Orientation="Horizontal" 
HorizontalAlignment="Center" VerticalAlignment="Center">
    <Button x:Name="myButton" Click="myButton_Click">Click Me</Button>
</StackPanel>
                                    Step 8
                                        While still in the XAML for MainWindow.xaml above </Window>, type in the following XAML:
                                    
                            
<Slider Margin="50" VerticalAlignment="Center"  
Style="{StaticResource CustomSlider}"/>
                                    
                                        This XAML contains a Slider with Style set to the 
                                        StaticResource of CustomSlider from App.xaml.
                                    
Step 9
 
                                            Step 10
                                        In the Code for MainWindow.xaml.cs there be a Method of myButton_Click(...) this should be Removed by removing the following:
                                    
private void myButton_Click(object sender, RoutedEventArgs e)
{
    myButton.Content = "Clicked";
}
                                    Step 11
 
                                            Step 12
Once running you will see the Custom Slider displayed.
                                         
                                    
Step 13
