Themes/MaterialDesignTheme.Slider.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:converters="clr-namespace:MaterialDesignThemes.Wpf.Converters"
                    xmlns:convertersInternal="clr-namespace:MaterialDesignThemes.Wpf.Converters.Internal"
                    xmlns:wpf="clr-namespace:MaterialDesignThemes.Wpf">
 
  <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Shadows.xaml" />
  </ResourceDictionary.MergedDictionaries>
 
  <Style x:Key="MaterialDesignRepeatButton" TargetType="{x:Type RepeatButton}">
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="Focusable" Value="False" />
    <Setter Property="IsTabStop" Value="False" />
    <Setter Property="OverridesDefaultStyle" Value="True" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type RepeatButton}">
          <Rectangle Fill="Transparent" />
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
 
  <ControlTemplate x:Key="MaterialDesignSliderThumb" TargetType="{x:Type Thumb}">
    <ControlTemplate.Resources>
      <Storyboard x:Key="ShowFocusVisualStoryboard">
        <DoubleAnimation Storyboard.TargetName="focusedHalo"
                         Storyboard.TargetProperty="Opacity"
                         To="0.15"
                         Duration="0" />
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="focusedHalo" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)">
          <EasingDoubleKeyFrame KeyTime="0:0:0.0" Value="0" />
          <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="1">
            <EasingDoubleKeyFrame.EasingFunction>
              <SineEase EasingMode="EaseInOut" />
            </EasingDoubleKeyFrame.EasingFunction>
          </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="focusedHalo" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)">
          <EasingDoubleKeyFrame KeyTime="0:0:0.0" Value="0" />
          <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="1">
            <EasingDoubleKeyFrame.EasingFunction>
              <SineEase EasingMode="EaseInOut" />
            </EasingDoubleKeyFrame.EasingFunction>
          </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
      </Storyboard>
      <Storyboard x:Key="HideFocusVisualStoryboard">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="focusedHalo" Storyboard.TargetProperty="Opacity">
          <EasingDoubleKeyFrame KeyTime="0:0:0" Value="0.15" />
          <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="0">
            <EasingDoubleKeyFrame.EasingFunction>
              <SineEase EasingMode="EaseInOut" />
            </EasingDoubleKeyFrame.EasingFunction>
          </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="focusedHalo"
                                       Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)"
                                       Duration="0">
          <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="0" />
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="focusedHalo"
                                       Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)"
                                       Duration="0">
          <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="0" />
        </DoubleAnimationUsingKeyFrames>
      </Storyboard>
    </ControlTemplate.Resources>
    <Grid x:Name="thumbGrid"
          Width="18"
          Height="20">
      <Ellipse x:Name="halo"
               Width="48"
               Height="48"
               Margin="-24"
               Fill="{TemplateBinding Foreground}"
               Opacity="0" />
      <Ellipse x:Name="focusedHalo"
               Width="48"
               Height="48"
               Margin="-24"
               Fill="{TemplateBinding Foreground}"
               Opacity="0.15"
               RenderTransformOrigin="0.5,0.5">
        <Ellipse.RenderTransform>
          <ScaleTransform ScaleX="0" ScaleY="0" />
        </Ellipse.RenderTransform>
      </Ellipse>
      <AdornerDecorator CacheMode="{Binding RelativeSource={RelativeSource Self}, Path=(wpf:ShadowAssist.CacheMode)}">
        <Ellipse x:Name="grip"
                 Margin="-1,0"
                 Effect="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=RangeBase}, Path=(wpf:ElevationAssist.Elevation), Converter={x:Static converters:ShadowConverter.Instance}}"
                 Fill="{TemplateBinding Foreground}" />
      </AdornerDecorator>
    </Grid>
    <ControlTemplate.Triggers>
      <DataTrigger Binding="{Binding Orientation, RelativeSource={RelativeSource FindAncestor, AncestorType=RangeBase}}" Value="{x:Static Orientation.Vertical}">
        <Setter TargetName="grip" Property="Margin" Value="0,-1" />
        <Setter TargetName="thumbGrid" Property="Height" Value="18" />
        <Setter TargetName="thumbGrid" Property="Width" Value="20" />
      </DataTrigger>
      <Trigger Property="IsMouseOver" Value="true">
        <Trigger.EnterActions>
          <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation Storyboard.TargetName="halo"
                               Storyboard.TargetProperty="Opacity"
                               To="0.15"
                               Duration="0:0:0.2" />
            </Storyboard>
          </BeginStoryboard>
        </Trigger.EnterActions>
        <Trigger.ExitActions>
          <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation Storyboard.TargetName="halo"
                               Storyboard.TargetProperty="Opacity"
                               To="0"
                               Duration="0:0:0.2" />
            </Storyboard>
          </BeginStoryboard>
        </Trigger.ExitActions>
      </Trigger>
      <DataTrigger Value="True">
        <DataTrigger.Binding>
          <MultiBinding Converter="{x:Static converters:BooleanAllConverter.Instance}">
            <Binding Path="IsFocused" RelativeSource="{RelativeSource FindAncestor, AncestorType=RangeBase}" />
            <Binding Converter="{x:Static converters:InvertBooleanConverter.Instance}"
                     Path="(wpf:SliderAssist.OnlyShowFocusVisualWhileDragging)"
                     RelativeSource="{RelativeSource FindAncestor,
                                                     AncestorType=RangeBase}" />
          </MultiBinding>
        </DataTrigger.Binding>
        <DataTrigger.EnterActions>
          <BeginStoryboard Storyboard="{StaticResource ShowFocusVisualStoryboard}" />
        </DataTrigger.EnterActions>
        <DataTrigger.ExitActions>
          <BeginStoryboard Storyboard="{StaticResource HideFocusVisualStoryboard}" />
        </DataTrigger.ExitActions>
      </DataTrigger>
      <DataTrigger Value="True">
        <DataTrigger.Binding>
          <MultiBinding Converter="{x:Static converters:BooleanAllConverter.Instance}">
            <Binding Path="IsDragging" RelativeSource="{RelativeSource Self}" />
            <Binding Path="(wpf:SliderAssist.OnlyShowFocusVisualWhileDragging)" RelativeSource="{RelativeSource FindAncestor, AncestorType=RangeBase}" />
          </MultiBinding>
        </DataTrigger.Binding>
        <DataTrigger.EnterActions>
          <BeginStoryboard Storyboard="{StaticResource ShowFocusVisualStoryboard}" />
        </DataTrigger.EnterActions>
        <DataTrigger.ExitActions>
          <BeginStoryboard Storyboard="{StaticResource HideFocusVisualStoryboard}" />
        </DataTrigger.ExitActions>
      </DataTrigger>
    </ControlTemplate.Triggers>
  </ControlTemplate>
 
  <ControlTemplate x:Key="MaterialDesignDiscreteSliderThumb" TargetType="{x:Type Thumb}">
    <ControlTemplate.Resources>
      <Storyboard x:Key="ShowFocusVisualStoryboard">
        <DoubleAnimation Storyboard.TargetName="focusedHalo"
                         Storyboard.TargetProperty="Opacity"
                         To="0.15"
                         Duration="0" />
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="focusedHalo" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)">
          <EasingDoubleKeyFrame KeyTime="0:0:0.0" Value="0" />
          <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="1">
            <EasingDoubleKeyFrame.EasingFunction>
              <SineEase EasingMode="EaseInOut" />
            </EasingDoubleKeyFrame.EasingFunction>
          </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="focusedHalo" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)">
          <EasingDoubleKeyFrame KeyTime="0:0:0.0" Value="0" />
          <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="1">
            <EasingDoubleKeyFrame.EasingFunction>
              <SineEase EasingMode="EaseInOut" />
            </EasingDoubleKeyFrame.EasingFunction>
          </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="label"
                                       Storyboard.TargetProperty="Visibility"
                                       Duration="0">
          <DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Visible}" />
        </ObjectAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="label" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
          <EasingDoubleKeyFrame KeyTime="0:0:0" Value="0" />
          <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="1">
            <EasingDoubleKeyFrame.EasingFunction>
              <SineEase EasingMode="EaseInOut" />
            </EasingDoubleKeyFrame.EasingFunction>
          </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="label" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
          <EasingDoubleKeyFrame KeyTime="0:0:0" Value="0" />
          <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="1">
            <EasingDoubleKeyFrame.EasingFunction>
              <SineEase EasingMode="EaseInOut" />
            </EasingDoubleKeyFrame.EasingFunction>
          </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
      </Storyboard>
      <Storyboard x:Key="HideFocusVisualStoryboard">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="focusedHalo" Storyboard.TargetProperty="Opacity">
          <EasingDoubleKeyFrame KeyTime="0:0:0" Value="0.15" />
          <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="0">
            <EasingDoubleKeyFrame.EasingFunction>
              <SineEase EasingMode="EaseInOut" />
            </EasingDoubleKeyFrame.EasingFunction>
          </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="focusedHalo"
                                       Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)"
                                       Duration="0">
          <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="0" />
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="focusedHalo"
                                       Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)"
                                       Duration="0">
          <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="0" />
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="label" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
          <EasingDoubleKeyFrame KeyTime="0:0:0" Value="1" />
          <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="0">
            <EasingDoubleKeyFrame.EasingFunction>
              <SineEase EasingMode="EaseInOut" />
            </EasingDoubleKeyFrame.EasingFunction>
          </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="label" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
          <EasingDoubleKeyFrame KeyTime="0:0:0" Value="1" />
          <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="0">
            <EasingDoubleKeyFrame.EasingFunction>
              <SineEase EasingMode="EaseInOut" />
            </EasingDoubleKeyFrame.EasingFunction>
          </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="label"
                                       Storyboard.TargetProperty="Visibility"
                                       Duration="0">
          <DiscreteObjectKeyFrame KeyTime="0:0:0.1" Value="{x:Static Visibility.Collapsed}" />
        </ObjectAnimationUsingKeyFrames>
      </Storyboard>
    </ControlTemplate.Resources>
    <Grid Width="18" Height="20">
      <Ellipse x:Name="halo"
               Width="48"
               Height="48"
               Margin="-24"
               Fill="{TemplateBinding Foreground}"
               Opacity="0" />
      <Ellipse x:Name="focusedHalo"
               Width="48"
               Height="48"
               Margin="-24"
               Fill="{TemplateBinding Foreground}"
               Opacity="0.15"
               RenderTransformOrigin="0.5,0.5">
        <Ellipse.RenderTransform>
          <ScaleTransform ScaleX="0" ScaleY="0" />
        </Ellipse.RenderTransform>
      </Ellipse>
      <Canvas>
        <Grid x:Name="label"
              Height="36"
              IsHitTestVisible="False"
              RenderTransformOrigin="0.5,1"
              Visibility="Collapsed">
          <Grid.RenderTransform>
            <TransformGroup>
              <ScaleTransform ScaleX="0" ScaleY="0" />
              <TranslateTransform X="{Binding ActualWidth, ElementName=label, Converter={x:Static convertersInternal:SliderValueLabelPositionConverter.Instance}, ConverterParameter={x:Static Orientation.Horizontal}}" Y="-40" />
            </TransformGroup>
          </Grid.RenderTransform>
          <AdornerDecorator CacheMode="{Binding RelativeSource={RelativeSource Self}, Path=(wpf:ShadowAssist.CacheMode)}">
            <Grid Effect="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=RangeBase}, Path=(wpf:ElevationAssist.Elevation), Converter={x:Static converters:ShadowConverter.Instance}}">
              <Rectangle Margin="0,0,0,5"
                         Fill="{DynamicResource MaterialDesign.Brush.ToolTip.Background}"
                         RadiusX="2"
                         RadiusY="2" />
              <Polygon HorizontalAlignment="Center"
                       VerticalAlignment="Bottom"
                       Fill="{DynamicResource MaterialDesign.Brush.ToolTip.Background}"
                       Points="0,0 4.5,5 9,0" />
            </Grid>
          </AdornerDecorator>
          <TextBlock Margin="12,0,12,5"
                     VerticalAlignment="Center"
                     Foreground="{DynamicResource MaterialDesign.Brush.Background}"
                     TextAlignment="Center">
            <TextBlock.Text>
              <MultiBinding Converter="{x:Static convertersInternal:SliderToolTipConverter.Instance}"
                            NotifyOnValidationError="True"
                            TargetNullValue=""
                            ValidatesOnDataErrors="True">
                <Binding Path="Value"
                         RelativeSource="{RelativeSource FindAncestor,
                                                         AncestorType=RangeBase}"
                         TargetNullValue="" />
                <Binding Path="(wpf:SliderAssist.ToolTipFormat)" RelativeSource="{RelativeSource FindAncestor, AncestorType=RangeBase}" />
              </MultiBinding>
            </TextBlock.Text>
          </TextBlock>
        </Grid>
      </Canvas>
      <AdornerDecorator CacheMode="{Binding RelativeSource={RelativeSource Self}, Path=(wpf:ShadowAssist.CacheMode)}">
        <Ellipse x:Name="grip"
                 Margin="-1,0"
                 Effect="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=RangeBase}, Path=(wpf:ElevationAssist.Elevation), Converter={x:Static converters:ShadowConverter.Instance}}"
                 Fill="{TemplateBinding Foreground}" />
      </AdornerDecorator>
    </Grid>
    <ControlTemplate.Triggers>
      <Trigger Property="IsMouseOver" Value="true">
        <Trigger.EnterActions>
          <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation Storyboard.TargetName="halo"
                               Storyboard.TargetProperty="Opacity"
                               To="0.15"
                               Duration="0:0:0.2" />
            </Storyboard>
          </BeginStoryboard>
        </Trigger.EnterActions>
        <Trigger.ExitActions>
          <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation Storyboard.TargetName="halo"
                               Storyboard.TargetProperty="Opacity"
                               To="0"
                               Duration="0:0:0.2" />
            </Storyboard>
          </BeginStoryboard>
        </Trigger.ExitActions>
      </Trigger>
      <DataTrigger Value="True">
        <DataTrigger.Binding>
          <MultiBinding Converter="{x:Static converters:BooleanAllConverter.Instance}">
            <Binding Path="IsFocused" RelativeSource="{RelativeSource FindAncestor, AncestorType=RangeBase}" />
            <Binding Converter="{x:Static converters:InvertBooleanConverter.Instance}"
                     Path="(wpf:SliderAssist.OnlyShowFocusVisualWhileDragging)"
                     RelativeSource="{RelativeSource FindAncestor,
                                                     AncestorType=RangeBase}" />
          </MultiBinding>
        </DataTrigger.Binding>
        <DataTrigger.EnterActions>
          <BeginStoryboard Storyboard="{StaticResource ShowFocusVisualStoryboard}" />
        </DataTrigger.EnterActions>
        <DataTrigger.ExitActions>
          <BeginStoryboard Storyboard="{StaticResource HideFocusVisualStoryboard}" />
        </DataTrigger.ExitActions>
      </DataTrigger>
      <DataTrigger Value="True">
        <DataTrigger.Binding>
          <MultiBinding Converter="{x:Static converters:BooleanAllConverter.Instance}">
            <Binding Path="IsDragging" RelativeSource="{RelativeSource Self}" />
            <Binding Path="(wpf:SliderAssist.OnlyShowFocusVisualWhileDragging)" RelativeSource="{RelativeSource FindAncestor, AncestorType=RangeBase}" />
          </MultiBinding>
        </DataTrigger.Binding>
        <DataTrigger.EnterActions>
          <BeginStoryboard Storyboard="{StaticResource ShowFocusVisualStoryboard}" />
        </DataTrigger.EnterActions>
        <DataTrigger.ExitActions>
          <BeginStoryboard Storyboard="{StaticResource HideFocusVisualStoryboard}" />
        </DataTrigger.ExitActions>
      </DataTrigger>
    </ControlTemplate.Triggers>
  </ControlTemplate>
 
  <ControlTemplate x:Key="MaterialDesignLeftDiscreteSliderThumb" TargetType="{x:Type Thumb}">
    <ControlTemplate.Resources>
      <Storyboard x:Key="ShowFocusVisualStoryboard">
        <DoubleAnimation Storyboard.TargetName="focusedHalo"
                         Storyboard.TargetProperty="Opacity"
                         To="0.15"
                         Duration="0" />
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="focusedHalo" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)">
          <EasingDoubleKeyFrame KeyTime="0:0:0.0" Value="0" />
          <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="1">
            <EasingDoubleKeyFrame.EasingFunction>
              <SineEase EasingMode="EaseInOut" />
            </EasingDoubleKeyFrame.EasingFunction>
          </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="focusedHalo" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)">
          <EasingDoubleKeyFrame KeyTime="0:0:0.0" Value="0" />
          <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="1">
            <EasingDoubleKeyFrame.EasingFunction>
              <SineEase EasingMode="EaseInOut" />
            </EasingDoubleKeyFrame.EasingFunction>
          </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="label"
                                       Storyboard.TargetProperty="Visibility"
                                       Duration="0">
          <DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Visible}" />
        </ObjectAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="label" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
          <EasingDoubleKeyFrame KeyTime="0:0:0" Value="0" />
          <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="1">
            <EasingDoubleKeyFrame.EasingFunction>
              <SineEase EasingMode="EaseInOut" />
            </EasingDoubleKeyFrame.EasingFunction>
          </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="label" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
          <EasingDoubleKeyFrame KeyTime="0:0:0" Value="0" />
          <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="1">
            <EasingDoubleKeyFrame.EasingFunction>
              <SineEase EasingMode="EaseInOut" />
            </EasingDoubleKeyFrame.EasingFunction>
          </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
      </Storyboard>
      <Storyboard x:Key="HideFocusVisualStoryboard">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="focusedHalo" Storyboard.TargetProperty="Opacity">
          <EasingDoubleKeyFrame KeyTime="0:0:0" Value="0.15" />
          <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="0">
            <EasingDoubleKeyFrame.EasingFunction>
              <SineEase EasingMode="EaseInOut" />
            </EasingDoubleKeyFrame.EasingFunction>
          </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="focusedHalo"
                                       Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)"
                                       Duration="0">
          <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="0" />
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="focusedHalo"
                                       Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)"
                                       Duration="0">
          <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="0" />
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="label" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
          <EasingDoubleKeyFrame KeyTime="0:0:0" Value="1" />
          <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="0">
            <EasingDoubleKeyFrame.EasingFunction>
              <SineEase EasingMode="EaseInOut" />
            </EasingDoubleKeyFrame.EasingFunction>
          </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="label" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
          <EasingDoubleKeyFrame KeyTime="0:0:0" Value="1" />
          <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="0">
            <EasingDoubleKeyFrame.EasingFunction>
              <SineEase EasingMode="EaseInOut" />
            </EasingDoubleKeyFrame.EasingFunction>
          </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="label"
                                       Storyboard.TargetProperty="Visibility"
                                       Duration="0">
          <DiscreteObjectKeyFrame KeyTime="0:0:0.1" Value="{x:Static Visibility.Collapsed}" />
        </ObjectAnimationUsingKeyFrames>
      </Storyboard>
    </ControlTemplate.Resources>
    <Grid Width="20" Height="18">
      <Ellipse x:Name="halo"
               Width="48"
               Height="48"
               Margin="-24"
               Fill="{TemplateBinding Foreground}"
               Opacity="0" />
      <Ellipse x:Name="focusedHalo"
               Width="48"
               Height="48"
               Margin="-24"
               Fill="{TemplateBinding Foreground}"
               Opacity="0.15"
               RenderTransformOrigin="0.5,0.5">
        <Ellipse.RenderTransform>
          <ScaleTransform ScaleX="0" ScaleY="0" />
        </Ellipse.RenderTransform>
      </Ellipse>
      <Canvas>
        <Grid x:Name="label"
              Height="31"
              IsHitTestVisible="False"
              RenderTransformOrigin="1,0.5"
              Visibility="Collapsed">
          <Grid.RenderTransform>
            <TransformGroup>
              <ScaleTransform ScaleX="0" ScaleY="0" />
              <TranslateTransform X="{Binding ActualWidth, ElementName=label, Converter={x:Static convertersInternal:SliderValueLabelPositionConverter.Instance}, ConverterParameter={x:Static Orientation.Vertical}}" Y="-7" />
            </TransformGroup>
          </Grid.RenderTransform>
          <AdornerDecorator CacheMode="{Binding RelativeSource={RelativeSource Self}, Path=(wpf:ShadowAssist.CacheMode)}">
            <Grid Effect="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=RangeBase}, Path=(wpf:ElevationAssist.Elevation), Converter={x:Static converters:ShadowConverter.Instance}}">
              <Rectangle Margin="0,0,5,0"
                         Fill="{DynamicResource MaterialDesign.Brush.ToolTip.Background}"
                         RadiusX="2"
                         RadiusY="2" />
              <Polygon HorizontalAlignment="Right"
                       VerticalAlignment="Center"
                       Fill="{DynamicResource MaterialDesign.Brush.ToolTip.Background}"
                       Points="0,0 6,5 0,10" />
            </Grid>
          </AdornerDecorator>
          <TextBlock Margin="12,0,17,0"
                     VerticalAlignment="Center"
                     Foreground="{DynamicResource MaterialDesign.Brush.Background}"
                     TextAlignment="Center">
            <TextBlock.Text>
              <MultiBinding Converter="{x:Static convertersInternal:SliderToolTipConverter.Instance}"
                            NotifyOnValidationError="True"
                            TargetNullValue=""
                            ValidatesOnDataErrors="True">
                <Binding Path="Value"
                         RelativeSource="{RelativeSource FindAncestor,
                                                         AncestorType=RangeBase}"
                         TargetNullValue="" />
                <Binding Path="(wpf:SliderAssist.ToolTipFormat)" RelativeSource="{RelativeSource FindAncestor, AncestorType=RangeBase}" />
              </MultiBinding>
            </TextBlock.Text>
          </TextBlock>
        </Grid>
      </Canvas>
      <AdornerDecorator CacheMode="{Binding RelativeSource={RelativeSource Self}, Path=(wpf:ShadowAssist.CacheMode)}">
        <Ellipse x:Name="grip"
                 Margin="0,-1"
                 Effect="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=RangeBase}, Path=(wpf:ElevationAssist.Elevation), Converter={x:Static converters:ShadowConverter.Instance}}"
                 Fill="{TemplateBinding Foreground}" />
      </AdornerDecorator>
    </Grid>
    <ControlTemplate.Triggers>
      <Trigger Property="IsMouseOver" Value="true">
        <Trigger.EnterActions>
          <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation Storyboard.TargetName="halo"
                               Storyboard.TargetProperty="Opacity"
                               To="0.15"
                               Duration="0:0:0.2" />
            </Storyboard>
          </BeginStoryboard>
        </Trigger.EnterActions>
        <Trigger.ExitActions>
          <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation Storyboard.TargetName="halo"
                               Storyboard.TargetProperty="Opacity"
                               To="0"
                               Duration="0:0:0.2" />
            </Storyboard>
          </BeginStoryboard>
        </Trigger.ExitActions>
      </Trigger>
      <DataTrigger Value="True">
        <DataTrigger.Binding>
          <MultiBinding Converter="{x:Static converters:BooleanAllConverter.Instance}">
            <Binding Path="IsFocused" RelativeSource="{RelativeSource FindAncestor, AncestorType=RangeBase}" />
            <Binding Converter="{x:Static converters:InvertBooleanConverter.Instance}"
                     Path="(wpf:SliderAssist.OnlyShowFocusVisualWhileDragging)"
                     RelativeSource="{RelativeSource FindAncestor,
                                                     AncestorType=RangeBase}" />
          </MultiBinding>
        </DataTrigger.Binding>
        <DataTrigger.EnterActions>
          <BeginStoryboard Storyboard="{StaticResource ShowFocusVisualStoryboard}" />
        </DataTrigger.EnterActions>
        <DataTrigger.ExitActions>
          <BeginStoryboard Storyboard="{StaticResource HideFocusVisualStoryboard}" />
        </DataTrigger.ExitActions>
      </DataTrigger>
      <DataTrigger Value="True">
        <DataTrigger.Binding>
          <MultiBinding Converter="{x:Static converters:BooleanAllConverter.Instance}">
            <Binding Path="IsDragging" RelativeSource="{RelativeSource Self}" />
            <Binding Path="(wpf:SliderAssist.OnlyShowFocusVisualWhileDragging)" RelativeSource="{RelativeSource FindAncestor, AncestorType=RangeBase}" />
          </MultiBinding>
        </DataTrigger.Binding>
        <DataTrigger.EnterActions>
          <BeginStoryboard Storyboard="{StaticResource ShowFocusVisualStoryboard}" />
        </DataTrigger.EnterActions>
        <DataTrigger.ExitActions>
          <BeginStoryboard Storyboard="{StaticResource HideFocusVisualStoryboard}" />
        </DataTrigger.ExitActions>
      </DataTrigger>
    </ControlTemplate.Triggers>
  </ControlTemplate>
 
  <ControlTemplate x:Key="MaterialDesignSliderHorizontal" TargetType="{x:Type Slider}">
    <Border Background="{TemplateBinding Background}"
            BorderBrush="{TemplateBinding BorderBrush}"
            BorderThickness="{TemplateBinding BorderThickness}"
            SnapsToDevicePixels="True"
            UseLayoutRounding="True">
      <Grid SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" UseLayoutRounding="{TemplateBinding UseLayoutRounding}">
        <Grid.RowDefinitions>
          <RowDefinition Height="Auto" />
          <RowDefinition Height="Auto" MinHeight="{TemplateBinding MinHeight}" />
          <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <TickBar x:Name="TopTick"
                 Grid.Row="0"
                 Height="4"
                 Margin="0,0,0,2"
                 Fill="{TemplateBinding Foreground}"
                 Placement="Top"
                 Visibility="Collapsed" />
        <TickBar x:Name="BottomTick"
                 Grid.Row="2"
                 Height="4"
                 Margin="0,2,0,0"
                 Fill="{TemplateBinding Foreground}"
                 Placement="Bottom"
                 Visibility="Collapsed" />
        <Rectangle Grid.Row="1"
                   Height="4"
                   VerticalAlignment="Center"
                   Fill="{TemplateBinding Foreground}"
                   Opacity="0.38"
                   RadiusX="2"
                   RadiusY="2" />
        <Border x:Name="activeTrack"
                Grid.Row="1"
                Width="{Binding DecreaseRepeatButton.ActualWidth, ElementName=PART_Track}"
                Height="6"
                HorizontalAlignment="Left"
                VerticalAlignment="Center"
                Background="{TemplateBinding Foreground}"
                CornerRadius="3,0,0,3" />
        <!-- Selection range must be wrapped in a Canvas for the position to be updated correctly -->
        <Canvas Grid.Row="1"
                Height="6"
                VerticalAlignment="Center">
          <Rectangle x:Name="PART_SelectionRange"
                     Height="6"
                     Fill="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"
                     RadiusX="2"
                     RadiusY="2"
                     Visibility="Collapsed" />
        </Canvas>
        <Track x:Name="PART_Track"
               Grid.Row="1"
               Height="20">
          <Track.DecreaseRepeatButton>
            <RepeatButton Command="{x:Static Slider.DecreaseLarge}" Style="{StaticResource MaterialDesignRepeatButton}" />
          </Track.DecreaseRepeatButton>
          <Track.IncreaseRepeatButton>
            <RepeatButton Command="{x:Static Slider.IncreaseLarge}" Style="{StaticResource MaterialDesignRepeatButton}" />
          </Track.IncreaseRepeatButton>
          <!-- It's important that the Thumb gets added last in the XAML to make sure it is drawn on top of both repeat buttons -->
          <Track.Thumb>
            <Thumb Foreground="{TemplateBinding Foreground}"
                   SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                   Template="{StaticResource MaterialDesignSliderThumb}" />
          </Track.Thumb>
        </Track>
      </Grid>
    </Border>
    <ControlTemplate.Triggers>
      <Trigger Property="TickPlacement" Value="TopLeft">
        <Setter TargetName="TopTick" Property="Visibility" Value="Visible" />
      </Trigger>
      <Trigger Property="TickPlacement" Value="BottomRight">
        <Setter TargetName="BottomTick" Property="Visibility" Value="Visible" />
      </Trigger>
      <Trigger Property="TickPlacement" Value="Both">
        <Setter TargetName="BottomTick" Property="Visibility" Value="Visible" />
        <Setter TargetName="TopTick" Property="Visibility" Value="Visible" />
      </Trigger>
      <Trigger Property="IsSelectionRangeEnabled" Value="true">
        <Setter TargetName="PART_SelectionRange" Property="Visibility" Value="Visible" />
      </Trigger>
      <Trigger Property="IsDirectionReversed" Value="True">
        <Setter TargetName="activeTrack" Property="CornerRadius" Value="0,3,3,0" />
        <Setter TargetName="activeTrack" Property="HorizontalAlignment" Value="Right" />
      </Trigger>
      <Trigger Property="wpf:SliderAssist.HideActiveTrack" Value="True">
        <Setter TargetName="activeTrack" Property="Visibility" Value="Hidden" />
      </Trigger>
    </ControlTemplate.Triggers>
  </ControlTemplate>
 
  <ControlTemplate x:Key="MaterialDesignSliderVertical" TargetType="{x:Type Slider}">
    <Border Background="{TemplateBinding Background}"
            BorderBrush="{TemplateBinding BorderBrush}"
            BorderThickness="{TemplateBinding BorderThickness}"
            SnapsToDevicePixels="True"
            UseLayoutRounding="True">
      <Grid SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" UseLayoutRounding="{TemplateBinding UseLayoutRounding}">
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="Auto" />
          <ColumnDefinition Width="Auto" MinWidth="{TemplateBinding MinWidth}" />
          <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <TickBar x:Name="TopTick"
                 Grid.Column="0"
                 Width="4"
                 Margin="0,0,2,0"
                 Fill="{TemplateBinding Foreground}"
                 Placement="Left"
                 Visibility="Collapsed" />
        <TickBar x:Name="BottomTick"
                 Grid.Column="2"
                 Width="4"
                 Margin="2,0,0,0"
                 Fill="{TemplateBinding Foreground}"
                 Placement="Right"
                 Visibility="Collapsed" />
        <Rectangle Grid.Column="1"
                   Width="4"
                   HorizontalAlignment="Center"
                   Fill="{TemplateBinding Foreground}"
                   Opacity="0.38"
                   RadiusX="2"
                   RadiusY="2" />
        <Border x:Name="activeTrack"
                Grid.Column="1"
                Width="6"
                Height="{Binding DecreaseRepeatButton.ActualHeight, ElementName=PART_Track}"
                HorizontalAlignment="Center"
                VerticalAlignment="Bottom"
                Background="{TemplateBinding Foreground}"
                CornerRadius="0,0,3,3" />
        <!-- Selection range must be wrapped in a Canvas for the position to be updated correctly -->
        <Canvas Grid.Column="1"
                Width="6"
                HorizontalAlignment="Center">
          <Rectangle x:Name="PART_SelectionRange"
                     Width="6"
                     Fill="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"
                     RadiusX="2"
                     RadiusY="2"
                     Visibility="Collapsed" />
        </Canvas>
        <Track x:Name="PART_Track"
               Grid.Column="1"
               Width="20">
          <Track.DecreaseRepeatButton>
            <RepeatButton Command="{x:Static Slider.DecreaseLarge}" Style="{StaticResource MaterialDesignRepeatButton}" />
          </Track.DecreaseRepeatButton>
          <Track.IncreaseRepeatButton>
            <RepeatButton Command="{x:Static Slider.IncreaseLarge}" Style="{StaticResource MaterialDesignRepeatButton}" />
          </Track.IncreaseRepeatButton>
          <!-- It's important that the Thumb gets added last in the XAML to make sure it is drawn on top of both repeat buttons -->
          <Track.Thumb>
            <Thumb Foreground="{TemplateBinding Foreground}"
                   SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                   Template="{StaticResource MaterialDesignSliderThumb}" />
          </Track.Thumb>
        </Track>
      </Grid>
    </Border>
    <ControlTemplate.Triggers>
      <Trigger Property="TickPlacement" Value="TopLeft">
        <Setter TargetName="TopTick" Property="Visibility" Value="Visible" />
      </Trigger>
      <Trigger Property="TickPlacement" Value="BottomRight">
        <Setter TargetName="BottomTick" Property="Visibility" Value="Visible" />
      </Trigger>
      <Trigger Property="TickPlacement" Value="Both">
        <Setter TargetName="BottomTick" Property="Visibility" Value="Visible" />
        <Setter TargetName="TopTick" Property="Visibility" Value="Visible" />
      </Trigger>
      <Trigger Property="IsSelectionRangeEnabled" Value="true">
        <Setter TargetName="PART_SelectionRange" Property="Visibility" Value="Visible" />
      </Trigger>
      <Trigger Property="IsDirectionReversed" Value="True">
        <Setter TargetName="activeTrack" Property="CornerRadius" Value="3,3,0,0" />
        <Setter TargetName="activeTrack" Property="VerticalAlignment" Value="Top" />
      </Trigger>
      <Trigger Property="wpf:SliderAssist.HideActiveTrack" Value="True">
        <Setter TargetName="activeTrack" Property="Visibility" Value="Hidden" />
      </Trigger>
    </ControlTemplate.Triggers>
  </ControlTemplate>
 
  <ControlTemplate x:Key="MaterialDesignDiscreteSliderHorizontal" TargetType="{x:Type Slider}">
    <Border Background="{TemplateBinding Background}"
            BorderBrush="{TemplateBinding BorderBrush}"
            BorderThickness="{TemplateBinding BorderThickness}"
            SnapsToDevicePixels="True"
            UseLayoutRounding="True">
      <Grid SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" UseLayoutRounding="{TemplateBinding UseLayoutRounding}">
        <Grid.RowDefinitions>
          <RowDefinition Height="Auto" />
          <RowDefinition Height="Auto" MinHeight="{TemplateBinding MinHeight}" />
          <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <TickBar x:Name="TopTick"
                 Grid.Row="0"
                 Height="4"
                 Margin="0,0,0,2"
                 Fill="{TemplateBinding Foreground}"
                 Placement="Top"
                 Visibility="Collapsed" />
        <TickBar x:Name="BottomTick"
                 Grid.Row="2"
                 Height="4"
                 Margin="0,2,0,0"
                 Fill="{TemplateBinding Foreground}"
                 Placement="Bottom"
                 Visibility="Collapsed" />
        <Rectangle Grid.Row="1"
                   Height="4"
                   VerticalAlignment="Center"
                   Fill="{TemplateBinding Foreground}"
                   Opacity="0.38"
                   RadiusX="2"
                   RadiusY="2" />
        <Border x:Name="activeTrack"
                Grid.Row="1"
                Width="{Binding DecreaseRepeatButton.ActualWidth, ElementName=PART_Track}"
                Height="6"
                HorizontalAlignment="Left"
                VerticalAlignment="Center"
                Background="{TemplateBinding Foreground}"
                CornerRadius="3,0,0,3" />
        <!-- Selection range must be wrapped in a Canvas for the position to be updated correctly -->
        <Canvas Grid.Row="1"
                Height="6"
                VerticalAlignment="Center">
          <Rectangle x:Name="PART_SelectionRange"
                     Height="6"
                     Fill="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"
                     RadiusX="2"
                     RadiusY="2"
                     Visibility="Collapsed" />
        </Canvas>
        <Track x:Name="PART_Track"
               Grid.Row="1"
               Height="20">
          <Track.DecreaseRepeatButton>
            <RepeatButton Command="{x:Static Slider.DecreaseLarge}" Style="{StaticResource MaterialDesignRepeatButton}" />
          </Track.DecreaseRepeatButton>
          <Track.IncreaseRepeatButton>
            <RepeatButton Command="{x:Static Slider.IncreaseLarge}" Style="{StaticResource MaterialDesignRepeatButton}" />
          </Track.IncreaseRepeatButton>
          <!-- It's important that the Thumb gets added last in the XAML to make sure it is drawn on top of both repeat buttons -->
          <Track.Thumb>
            <Thumb Foreground="{TemplateBinding Foreground}"
                   SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                   Template="{StaticResource MaterialDesignDiscreteSliderThumb}" />
          </Track.Thumb>
        </Track>
      </Grid>
    </Border>
    <ControlTemplate.Triggers>
      <Trigger Property="TickPlacement" Value="TopLeft">
        <Setter TargetName="TopTick" Property="Visibility" Value="Visible" />
      </Trigger>
      <Trigger Property="TickPlacement" Value="BottomRight">
        <Setter TargetName="BottomTick" Property="Visibility" Value="Visible" />
      </Trigger>
      <Trigger Property="TickPlacement" Value="Both">
        <Setter TargetName="BottomTick" Property="Visibility" Value="Visible" />
        <Setter TargetName="TopTick" Property="Visibility" Value="Visible" />
      </Trigger>
      <Trigger Property="IsSelectionRangeEnabled" Value="true">
        <Setter TargetName="PART_SelectionRange" Property="Visibility" Value="Visible" />
      </Trigger>
      <Trigger Property="IsDirectionReversed" Value="True">
        <Setter TargetName="activeTrack" Property="CornerRadius" Value="0,3,3,0" />
        <Setter TargetName="activeTrack" Property="HorizontalAlignment" Value="Right" />
      </Trigger>
      <Trigger Property="wpf:SliderAssist.HideActiveTrack" Value="True">
        <Setter TargetName="activeTrack" Property="Visibility" Value="Hidden" />
      </Trigger>
    </ControlTemplate.Triggers>
  </ControlTemplate>
 
  <ControlTemplate x:Key="MaterialDesignDiscreteSliderVertical" TargetType="{x:Type Slider}">
    <Border Background="{TemplateBinding Background}"
            BorderBrush="{TemplateBinding BorderBrush}"
            BorderThickness="{TemplateBinding BorderThickness}"
            SnapsToDevicePixels="True"
            UseLayoutRounding="True">
      <Grid SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" UseLayoutRounding="{TemplateBinding UseLayoutRounding}">
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="Auto" />
          <ColumnDefinition Width="Auto" MinWidth="{TemplateBinding MinWidth}" />
          <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <TickBar x:Name="TopTick"
                 Grid.Column="0"
                 Width="4"
                 Margin="0,0,2,0"
                 Fill="{TemplateBinding Foreground}"
                 Placement="Left"
                 Visibility="Collapsed" />
        <TickBar x:Name="BottomTick"
                 Grid.Column="2"
                 Width="4"
                 Margin="2,0,0,0"
                 Fill="{TemplateBinding Foreground}"
                 Placement="Right"
                 Visibility="Collapsed" />
        <Rectangle Grid.Column="1"
                   Width="4"
                   HorizontalAlignment="Center"
                   Fill="{TemplateBinding Foreground}"
                   Opacity="0.38"
                   RadiusX="2"
                   RadiusY="2" />
        <Border x:Name="activeTrack"
                Grid.Column="1"
                Width="6"
                Height="{Binding DecreaseRepeatButton.ActualHeight, ElementName=PART_Track}"
                HorizontalAlignment="Center"
                VerticalAlignment="Bottom"
                Background="{TemplateBinding Foreground}"
                CornerRadius="0,0,3,3" />
        <!-- Selection range must be wrapped in a Canvas for the position to be updated correctly -->
        <Canvas Grid.Column="1"
                Width="6"
                HorizontalAlignment="Center">
          <Rectangle x:Name="PART_SelectionRange"
                     Width="6"
                     Fill="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"
                     RadiusX="2"
                     RadiusY="2"
                     Visibility="Collapsed" />
        </Canvas>
        <Track x:Name="PART_Track"
               Grid.Column="1"
               Width="20">
          <Track.DecreaseRepeatButton>
            <RepeatButton Command="{x:Static Slider.DecreaseLarge}" Style="{StaticResource MaterialDesignRepeatButton}" />
          </Track.DecreaseRepeatButton>
          <Track.IncreaseRepeatButton>
            <RepeatButton Command="{x:Static Slider.IncreaseLarge}" Style="{StaticResource MaterialDesignRepeatButton}" />
          </Track.IncreaseRepeatButton>
          <!-- It's important that the Thumb gets added last in the XAML to make sure it is drawn on top of both repeat buttons -->
          <Track.Thumb>
            <Thumb Foreground="{TemplateBinding Foreground}"
                   SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                   Template="{StaticResource MaterialDesignLeftDiscreteSliderThumb}" />
          </Track.Thumb>
        </Track>
      </Grid>
    </Border>
    <ControlTemplate.Triggers>
      <Trigger Property="TickPlacement" Value="TopLeft">
        <Setter TargetName="TopTick" Property="Visibility" Value="Visible" />
      </Trigger>
      <Trigger Property="TickPlacement" Value="BottomRight">
        <Setter TargetName="BottomTick" Property="Visibility" Value="Visible" />
      </Trigger>
      <Trigger Property="TickPlacement" Value="Both">
        <Setter TargetName="BottomTick" Property="Visibility" Value="Visible" />
        <Setter TargetName="TopTick" Property="Visibility" Value="Visible" />
      </Trigger>
      <Trigger Property="IsSelectionRangeEnabled" Value="true">
        <Setter TargetName="PART_SelectionRange" Property="Visibility" Value="Visible" />
      </Trigger>
      <Trigger Property="IsDirectionReversed" Value="True">
        <Setter TargetName="activeTrack" Property="CornerRadius" Value="3,3,0,0" />
        <Setter TargetName="activeTrack" Property="VerticalAlignment" Value="Top" />
      </Trigger>
      <Trigger Property="wpf:SliderAssist.HideActiveTrack" Value="True">
        <Setter TargetName="activeTrack" Property="Visibility" Value="Hidden" />
      </Trigger>
    </ControlTemplate.Triggers>
  </ControlTemplate>
 
  <Style x:Key="MaterialDesignSlider" TargetType="{x:Type Slider}">
    <Setter Property="Background" Value="{x:Null}" />
    <Setter Property="BorderBrush" Value="Transparent" />
    <Setter Property="FocusVisualStyle" Value="{x:Null}" />
    <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
    <Setter Property="IsMoveToPointEnabled" Value="True" />
    <Setter Property="SnapsToDevicePixels" Value="False" />
    <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false" />
    <Setter Property="Template" Value="{StaticResource MaterialDesignSliderHorizontal}" />
    <Setter Property="UseLayoutRounding" Value="False" />
    <Setter Property="wpf:ElevationAssist.Elevation" Value="Dp1" />
    <Style.Triggers>
      <Trigger Property="Orientation" Value="Vertical">
        <Setter Property="Template" Value="{StaticResource MaterialDesignSliderVertical}" />
      </Trigger>
      <Trigger Property="IsEnabled" Value="False">
        <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.CheckBox.Disabled}" />
      </Trigger>
    </Style.Triggers>
  </Style>
 
  <Style x:Key="MaterialDesignDiscreteHorizontalSlider" TargetType="{x:Type Slider}">
    <Setter Property="Background" Value="{x:Null}" />
    <Setter Property="BorderBrush" Value="Transparent" />
    <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
    <Setter Property="IsMoveToPointEnabled" Value="True" />
    <Setter Property="IsSnapToTickEnabled" Value="True" />
    <Setter Property="Orientation" Value="Horizontal" />
    <Setter Property="SnapsToDevicePixels" Value="False" />
    <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false" />
    <Setter Property="Template" Value="{StaticResource MaterialDesignDiscreteSliderHorizontal}" />
    <Setter Property="UseLayoutRounding" Value="False" />
    <Setter Property="wpf:ElevationAssist.Elevation" Value="Dp1" />
    <Setter Property="wpf:SliderAssist.FocusSliderOnClick" Value="True" />
    <Style.Triggers>
      <Trigger Property="IsEnabled" Value="False">
        <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.CheckBox.Disabled}" />
      </Trigger>
      <Trigger Property="wpf:SliderAssist.OnlyShowFocusVisualWhileDragging" Value="False">
        <Setter Property="FocusVisualStyle" Value="{x:Null}" />
      </Trigger>
    </Style.Triggers>
  </Style>
 
  <Style x:Key="MaterialDesignDiscreteVerticalSlider" TargetType="{x:Type Slider}">
    <Setter Property="Background" Value="{x:Null}" />
    <Setter Property="BorderBrush" Value="Transparent" />
    <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
    <Setter Property="IsMoveToPointEnabled" Value="True" />
    <Setter Property="IsSnapToTickEnabled" Value="True" />
    <Setter Property="Orientation" Value="Vertical" />
    <Setter Property="SnapsToDevicePixels" Value="False" />
    <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false" />
    <Setter Property="Template" Value="{StaticResource MaterialDesignDiscreteSliderVertical}" />
    <Setter Property="UseLayoutRounding" Value="False" />
    <Setter Property="wpf:ElevationAssist.Elevation" Value="Dp1" />
    <Setter Property="wpf:SliderAssist.FocusSliderOnClick" Value="True" />
    <Style.Triggers>
      <Trigger Property="IsEnabled" Value="False">
        <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.CheckBox.Disabled}" />
      </Trigger>
      <Trigger Property="wpf:SliderAssist.OnlyShowFocusVisualWhileDragging" Value="False">
        <Setter Property="FocusVisualStyle" Value="{x:Null}" />
      </Trigger>
    </Style.Triggers>
  </Style>
 
  <Style x:Key="MaterialDesignDiscreteSlider"
         TargetType="{x:Type Slider}"
         BasedOn="{StaticResource MaterialDesignDiscreteHorizontalSlider}">
    <Style.Triggers>
      <Trigger Property="IsEnabled" Value="False">
        <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.CheckBox.Disabled}" />
      </Trigger>
      <Trigger Property="Orientation" Value="Horizontal">
        <Setter Property="Template" Value="{StaticResource MaterialDesignDiscreteSliderHorizontal}" />
      </Trigger>
      <Trigger Property="Orientation" Value="Vertical">
        <Setter Property="Template" Value="{StaticResource MaterialDesignDiscreteSliderVertical}" />
      </Trigger>
      <Trigger Property="wpf:SliderAssist.OnlyShowFocusVisualWhileDragging" Value="False">
        <Setter Property="FocusVisualStyle" Value="{x:Null}" />
      </Trigger>
    </Style.Triggers>
  </Style>
</ResourceDictionary>