Themes/MaterialDesign3.ToggleButton.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:po="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
                    xmlns:system="clr-namespace:System;assembly=mscorlib"
                    xmlns:wpf="clr-namespace:MaterialDesignThemes.Wpf">
 
  <Style x:Key="FocusVisual">
    <Setter Property="Control.Template">
      <Setter.Value>
        <ControlTemplate>
          <Rectangle Margin="2"
                     SnapsToDevicePixels="true"
                     Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"
                     StrokeDashArray="1 2"
                     StrokeThickness="1" />
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
 
  <wpf:PackIcon x:Key="CheckMarkIcon"
                Width="24"
                Height="24"
                x:Shared="False"
                FlowDirection="LeftToRight"
                Kind="Check" />
 
  <wpf:PackIcon x:Key="SwitchCheckMarkIcon"
                Width="16"
                Height="16"
                x:Shared="False"
                Kind="Check" />
 
  <Style x:Key="MaterialDesignActionToggleButton" TargetType="{x:Type ToggleButton}">
    <Style.Resources>
      <ResourceDictionary>
        <Style TargetType="wpf:PackIcon" BasedOn="{StaticResource {x:Type wpf:PackIcon}}">
          <Setter Property="Height" Value="20" />
          <Setter Property="Width" Value="20" />
        </Style>
      </ResourceDictionary>
    </Style.Resources>
    <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
    <Setter Property="BorderThickness" Value="1" />
    <Setter Property="Cursor" Value="Hand" />
    <Setter Property="FontSize" Value="18" />
    <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary.Foreground}" />
    <Setter Property="Height" Value="32" />
    <Setter Property="HorizontalContentAlignment" Value="Center" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type ToggleButton}">
          <Grid Effect="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ElevationAssist.Elevation), Converter={x:Static converters:ShadowConverter.Instance}}">
            <VisualStateManager.VisualStateGroups>
              <VisualStateGroup x:Name="CommonStates">
                <VisualState x:Name="Normal" />
                <VisualState x:Name="Disabled">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetProperty="(UIElement.Opacity)"
                                     To="0.38"
                                     Duration="0" />
                  </Storyboard>
                </VisualState>
              </VisualStateGroup>
              <VisualStateGroup x:Name="CheckStates">
                <VisualStateGroup.Transitions>
                  <VisualTransition From="*" To="Checked">
                    <Storyboard FillBehavior="HoldEnd">
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="OffScaleTransform"
                                                     Storyboard.TargetProperty="ScaleX"
                                                     Duration="0:0:0.2">
                        <LinearDoubleKeyFrame KeyTime="0:0:0.0" Value="1" />
                        <LinearDoubleKeyFrame KeyTime="0:0:0.1" Value="0" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="OnScaleTransform"
                                                     Storyboard.TargetProperty="ScaleX"
                                                     Duration="0:0:0.2">
                        <LinearDoubleKeyFrame KeyTime="0:0:0.1" Value="0" />
                        <LinearDoubleKeyFrame KeyTime="0:0:0.2" Value="1" />
                      </DoubleAnimationUsingKeyFrames>
                    </Storyboard>
                  </VisualTransition>
                  <VisualTransition From="Checked" To="Unchecked">
                    <Storyboard FillBehavior="HoldEnd">
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="OnScaleTransform"
                                                     Storyboard.TargetProperty="ScaleX"
                                                     Duration="0:0:0.2">
                        <LinearDoubleKeyFrame KeyTime="0:0:0.0" Value="1" />
                        <LinearDoubleKeyFrame KeyTime="0:0:0.1" Value="0" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="OffScaleTransform"
                                                     Storyboard.TargetProperty="ScaleX"
                                                     Duration="0:0:0.2">
                        <LinearDoubleKeyFrame KeyTime="0:0:0.1" Value="0" />
                        <LinearDoubleKeyFrame KeyTime="0:0:0.2" Value="1" />
                      </DoubleAnimationUsingKeyFrames>
                    </Storyboard>
                  </VisualTransition>
                </VisualStateGroup.Transitions>
                <VisualState x:Name="Checked">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="OffScaleTransform"
                                     Storyboard.TargetProperty="ScaleX"
                                     To="0"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="OnScaleTransform"
                                     Storyboard.TargetProperty="ScaleX"
                                     To="1"
                                     Duration="0" />
                  </Storyboard>
                </VisualState>
                <VisualState x:Name="Unchecked">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="OffScaleTransform"
                                     Storyboard.TargetProperty="ScaleX"
                                     To="1"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="OnScaleTransform"
                                     Storyboard.TargetProperty="ScaleX"
                                     To="0"
                                     Duration="0" />
                  </Storyboard>
                </VisualState>
                <VisualState x:Name="Indeterminate">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="IndeterminateCheck"
                                     Storyboard.TargetProperty="(UIElement.Opacity)"
                                     To="1"
                                     Duration="0" />
                  </Storyboard>
                </VisualState>
              </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
            <Grid x:Name="OffGrid"
                  Background="{TemplateBinding Background}"
                  RenderTransformOrigin=".5,.5">
              <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                Content="{TemplateBinding Content}"
                                ContentTemplate="{TemplateBinding ContentTemplate}"
                                FlowDirection="LeftToRight" />
              <Grid.Clip>
                <EllipseGeometry RadiusX="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Width, Converter={x:Static converters:MathConverter.DivideInstance}, ConverterParameter=2.0}" RadiusY="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Height, Converter={x:Static converters:MathConverter.DivideInstance}, ConverterParameter=2.0}">
                  <EllipseGeometry.Center>
                    <MultiBinding Converter="{x:Static converters:PointValueConverter.Instance}">
                      <Binding Converter="{x:Static converters:MathConverter.DivideInstance}"
                               ConverterParameter="2.0"
                               Path="Width"
                               RelativeSource="{RelativeSource TemplatedParent}" />
                      <Binding Converter="{x:Static converters:MathConverter.DivideInstance}"
                               ConverterParameter="2.0"
                               Path="Height"
                               RelativeSource="{RelativeSource TemplatedParent}" />
                    </MultiBinding>
                  </EllipseGeometry.Center>
                </EllipseGeometry>
              </Grid.Clip>
              <Grid.RenderTransform>
                <ScaleTransform x:Name="OffScaleTransform" ScaleX="1" ScaleY="1" />
              </Grid.RenderTransform>
            </Grid>
            <Grid x:Name="OnGrid"
                  Background="{TemplateBinding Background}"
                  RenderTransformOrigin=".5,.5">
              <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ToggleButtonAssist.OnContent)}"
                                ContentTemplate="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ToggleButtonAssist.OnContentTemplate)}"
                                FlowDirection="LeftToRight" />
              <Grid.Clip>
                <EllipseGeometry RadiusX="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Width, Converter={x:Static converters:MathConverter.DivideInstance}, ConverterParameter=2.0}" RadiusY="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Height, Converter={x:Static converters:MathConverter.DivideInstance}, ConverterParameter=2.0}">
                  <EllipseGeometry.Center>
                    <MultiBinding Converter="{x:Static converters:PointValueConverter.Instance}">
                      <Binding Converter="{x:Static converters:MathConverter.DivideInstance}"
                               ConverterParameter="2.0"
                               Path="Width"
                               RelativeSource="{RelativeSource TemplatedParent}" />
                      <Binding Converter="{x:Static converters:MathConverter.DivideInstance}"
                               ConverterParameter="2.0"
                               Path="Height"
                               RelativeSource="{RelativeSource TemplatedParent}" />
                    </MultiBinding>
                  </EllipseGeometry.Center>
                </EllipseGeometry>
              </Grid.Clip>
              <Grid.RenderTransform>
                <ScaleTransform x:Name="OnScaleTransform" ScaleX="0" ScaleY="1" />
              </Grid.RenderTransform>
            </Grid>
          </Grid>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
    <Setter Property="VerticalContentAlignment" Value="Center" />
    <Setter Property="Width" Value="32" />
    <Setter Property="wpf:ElevationAssist.Elevation" Value="Dp0" />
    <Setter Property="wpf:ToggleButtonAssist.OnContent" Value="{StaticResource CheckMarkIcon}" />
  </Style>
 
  <Style x:Key="MaterialDesignActionLightToggleButton"
         TargetType="{x:Type ToggleButton}"
         BasedOn="{StaticResource MaterialDesignActionToggleButton}">
    <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.Primary.Light}" />
    <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.Primary.Light}" />
    <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary.Light.Foreground}" />
  </Style>
 
  <Style x:Key="MaterialDesignActionDarkToggleButton"
         TargetType="{x:Type ToggleButton}"
         BasedOn="{StaticResource MaterialDesignActionToggleButton}">
    <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.Primary.Dark}" />
    <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.Primary.Dark}" />
    <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary.Dark.Foreground}" />
  </Style>
 
  <Style x:Key="MaterialDesignActionSecondaryToggleButton"
         TargetType="{x:Type ToggleButton}"
         BasedOn="{StaticResource MaterialDesignActionToggleButton}">
    <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.Secondary}" />
    <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.Secondary}" />
    <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.Secondary.Foreground}" />
  </Style>
 
  <Style x:Key="MaterialDesignFlatToggleButton" TargetType="{x:Type ToggleButton}">
    <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.ToolBar.Item.Background}" />
    <Setter Property="FontSize" Value="18" />
    <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.ToolBar.Item.Foreground}" />
    <Setter Property="Height" Value="40" />
    <Setter Property="HorizontalContentAlignment" Value="Center" />
    <Setter Property="Padding" Value="0" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type ToggleButton}">
          <Grid Width="{TemplateBinding Width}"
                Height="{TemplateBinding Height}"
                ClipToBounds="True">
            <VisualStateManager.VisualStateGroups>
              <VisualStateGroup x:Name="CommonStates">
                <VisualState x:Name="Normal" />
                <VisualState x:Name="Disabled">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetProperty="(UIElement.Opacity)"
                                     To="0.38"
                                     Duration="0" />
                  </Storyboard>
                </VisualState>
              </VisualStateGroup>
              <VisualStateGroup x:Name="CheckStates">
                <VisualStateGroup.Transitions>
                  <VisualTransition From="*" To="Checked">
                    <Storyboard>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="CheckedEllipseScale"
                                                     Storyboard.TargetProperty="ScaleX"
                                                     Duration="0:0:0.2">
                        <LinearDoubleKeyFrame KeyTime="0:0:0.0" Value="0" />
                        <LinearDoubleKeyFrame KeyTime="0:0:0.1" Value="1.0" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="CheckedEllipseScale"
                                                     Storyboard.TargetProperty="ScaleY"
                                                     Duration="0:0:0.2">
                        <LinearDoubleKeyFrame KeyTime="0:0:0.0" Value="0" />
                        <LinearDoubleKeyFrame KeyTime="0:0:0.1" Value="1.0" />
                      </DoubleAnimationUsingKeyFrames>
                    </Storyboard>
                  </VisualTransition>
                  <VisualTransition From="Checked" To="Unchecked">
                    <Storyboard>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="CheckedEllipseScale"
                                                     Storyboard.TargetProperty="ScaleX"
                                                     Duration="0:0:0.2">
                        <LinearDoubleKeyFrame KeyTime="0:0:0.0" Value="1.0" />
                        <LinearDoubleKeyFrame KeyTime="0:0:0.1" Value="0" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="CheckedEllipseScale"
                                                     Storyboard.TargetProperty="ScaleY"
                                                     Duration="0:0:0.2">
                        <LinearDoubleKeyFrame KeyTime="0:0:0.0" Value="1.0" />
                        <LinearDoubleKeyFrame KeyTime="0:0:0.1" Value="0" />
                      </DoubleAnimationUsingKeyFrames>
                    </Storyboard>
                  </VisualTransition>
                </VisualStateGroup.Transitions>
                <VisualState x:Name="Checked">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="CheckedEllipseScale"
                                     Storyboard.TargetProperty="ScaleX"
                                     To="1.0"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="CheckedEllipseScale"
                                     Storyboard.TargetProperty="ScaleY"
                                     To="1.0"
                                     Duration="0" />
                  </Storyboard>
                </VisualState>
                <VisualState x:Name="Unchecked">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="CheckedEllipseScale"
                                     Storyboard.TargetProperty="ScaleX"
                                     To="0"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="CheckedEllipseScale"
                                     Storyboard.TargetProperty="ScaleY"
                                     To="0"
                                     Duration="0" />
                  </Storyboard>
                </VisualState>
              </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
            <Ellipse x:Name="HoverEllipse"
                     Fill="Transparent"
                     Stroke="Transparent"
                     StrokeThickness="1" />
            <Ellipse x:Name="CheckedEllipse"
                     Fill="{TemplateBinding Background}"
                     RenderTransformOrigin="0.5, 0.5">
              <Ellipse.RenderTransform>
                <ScaleTransform x:Name="CheckedEllipseScale" CenterX="0.5" CenterY="0.5" ScaleX="1.0" ScaleY="1.0" />
              </Ellipse.RenderTransform>
            </Ellipse>
            <ContentPresenter x:Name="contentPresenter"
                              Margin="{TemplateBinding Padding}"
                              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                              VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                              Content="{TemplateBinding Content}"
                              ContentTemplate="{TemplateBinding ContentTemplate}" />
          </Grid>
          <ControlTemplate.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
              <Setter TargetName="HoverEllipse" Property="Stroke" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Background}" />
            </Trigger>
            <!-- TODO
                        <Trigger Property="IsFocused" Value="True">
                            <Setter Property="BorderBrush" TargetName="normal" Value="{Binding (Custom:ControlsHelper.FocusBorderBrush), RelativeSource={RelativeSource TemplatedParent}}"/>
                        </Trigger>
                        -->
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
    <Setter Property="VerticalContentAlignment" Value="Center" />
    <Setter Property="Width" Value="40" />
  </Style>
 
  <Style x:Key="MaterialDesignFlatPrimaryToggleButton"
         TargetType="{x:Type ToggleButton}"
         BasedOn="{StaticResource MaterialDesignFlatToggleButton}">
    <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.Primary.Light}" />
    <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary.Dark}" />
  </Style>
 
  <Style x:Key="MaterialDesignSwitchToggleButton" TargetType="{x:Type ToggleButton}">
    <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.Background}" />
    <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.ForegroundLight}" />
    <Setter Property="BorderThickness" Value="2" />
    <Setter Property="Cursor" Value="Hand" />
    <Setter Property="FocusVisualStyle" Value="{x:Null}" />
    <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.Foreground}" />
    <Setter Property="Height" Value="32" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="ToggleButton">
          <Grid x:Name="SwitchGrid" FlowDirection="LeftToRight">
            <Grid.Tag>
              <!-- used for thumb off size -->
              <system:Double>24</system:Double>
            </Grid.Tag>
            <Grid.Resources>
              <Storyboard x:Key="UncheckedTransitionStoryboard">
                <DoubleAnimation Storyboard.TargetName="ThumbGrid"
                                 Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)"
                                 To="0"
                                 Duration="0:0:0.2">
                  <DoubleAnimation.EasingFunction>
                    <BackEase Amplitude="0.35" EasingMode="EaseOut" />
                  </DoubleAnimation.EasingFunction>
                </DoubleAnimation>
                <DoubleAnimation Storyboard.TargetName="Thumb"
                                 Storyboard.TargetProperty="Width"
                                 To="{Binding Tag, ElementName=SwitchGrid}"
                                 Duration="0:0:0.2">
                  <DoubleAnimation.EasingFunction>
                    <QuadraticEase EasingMode="EaseOut" />
                  </DoubleAnimation.EasingFunction>
                </DoubleAnimation>
                <DoubleAnimation Storyboard.TargetName="Thumb"
                                 Storyboard.TargetProperty="Height"
                                 To="{Binding Tag, ElementName=SwitchGrid}"
                                 Duration="0:0:0.16">
                  <DoubleAnimation.EasingFunction>
                    <QuadraticEase EasingMode="EaseOut" />
                  </DoubleAnimation.EasingFunction>
                </DoubleAnimation>
              </Storyboard>
              <Storyboard x:Key="UncheckedStoryboard">
                <DoubleAnimation Storyboard.TargetName="ThumbGrid"
                                 Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)"
                                 To="0"
                                 Duration="0" />
                <DoubleAnimation Storyboard.TargetName="Thumb"
                                 Storyboard.TargetProperty="Width"
                                 From="0"
                                 To="{Binding Tag, ElementName=SwitchGrid}"
                                 Duration="0" />
                <DoubleAnimation Storyboard.TargetName="Thumb"
                                 Storyboard.TargetProperty="Height"
                                 From="0"
                                 To="{Binding Tag, ElementName=SwitchGrid}"
                                 Duration="0" />
              </Storyboard>
            </Grid.Resources>
            <VisualStateManager.VisualStateGroups>
              <VisualStateGroup x:Name="CheckStates">
                <VisualStateGroup.Transitions>
                  <VisualTransition From="*" To="Checked">
                    <Storyboard>
                      <DoubleAnimation Storyboard.TargetName="ThumbGrid"
                                       Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)"
                                       To="20"
                                       Duration="0:0:0.2">
                        <DoubleAnimation.EasingFunction>
                          <BackEase Amplitude="0.35" EasingMode="EaseOut" />
                        </DoubleAnimation.EasingFunction>
                      </DoubleAnimation>
                      <DoubleAnimation Storyboard.TargetName="Thumb"
                                       Storyboard.TargetProperty="Width"
                                       To="24"
                                       Duration="0:0:0.2">
                        <DoubleAnimation.EasingFunction>
                          <QuadraticEase EasingMode="EaseOut" />
                        </DoubleAnimation.EasingFunction>
                      </DoubleAnimation>
                      <DoubleAnimation Storyboard.TargetName="Thumb"
                                       Storyboard.TargetProperty="Height"
                                       To="24"
                                       Duration="0:0:0.16">
                        <DoubleAnimation.EasingFunction>
                          <QuadraticEase EasingMode="EaseOut" />
                        </DoubleAnimation.EasingFunction>
                      </DoubleAnimation>
                    </Storyboard>
                  </VisualTransition>
                  <VisualTransition Storyboard="{StaticResource UncheckedTransitionStoryboard}"
                                    From="Checked"
                                    To="Unchecked" />
                </VisualStateGroup.Transitions>
                <VisualState x:Name="Checked">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="ThumbGrid"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)"
                                     To="20"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="Thumb"
                                     Storyboard.TargetProperty="Width"
                                     To="24"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="Thumb"
                                     Storyboard.TargetProperty="Height"
                                     To="24"
                                     Duration="0" />
                  </Storyboard>
                </VisualState>
                <VisualState x:Name="Unchecked" Storyboard="{StaticResource UncheckedStoryboard}" />
              </VisualStateGroup>
              <VisualStateGroup x:Name="CommonStates">
                <VisualState x:Name="Normal" />
                <VisualState x:Name="MouseOver">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="StateLayer"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)"
                                     To="2.5"
                                     Duration="0:0:0.05" />
                    <DoubleAnimation Storyboard.TargetName="StateLayer"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)"
                                     To="2.5"
                                     Duration="0:0:0.05" />
                    <DoubleAnimation Storyboard.TargetName="StateLayer"
                                     Storyboard.TargetProperty="Opacity"
                                     To="0.08"
                                     Duration="0" />
                  </Storyboard>
                </VisualState>
                <VisualState x:Name="Pressed">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="StateLayer"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)"
                                     To="2.5"
                                     Duration="0:0:0.05" />
                    <DoubleAnimation Storyboard.TargetName="StateLayer"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)"
                                     To="2.5"
                                     Duration="0:0:0.05" />
                    <DoubleAnimation Storyboard.TargetName="StateLayer"
                                     Storyboard.TargetProperty="Opacity"
                                     To="0.12"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="Thumb"
                                     Storyboard.TargetProperty="Width"
                                     To="28"
                                     Duration="0:0:0.05">
                      <DoubleAnimation.EasingFunction>
                        <QuadraticEase EasingMode="EaseOut" />
                      </DoubleAnimation.EasingFunction>
                    </DoubleAnimation>
                    <DoubleAnimation Storyboard.TargetName="Thumb"
                                     Storyboard.TargetProperty="Height"
                                     To="28"
                                     Duration="0:0:0.05">
                      <DoubleAnimation.EasingFunction>
                        <QuadraticEase EasingMode="EaseOut" />
                      </DoubleAnimation.EasingFunction>
                    </DoubleAnimation>
                  </Storyboard>
                </VisualState>
              </VisualStateGroup>
              <VisualStateGroup x:Name="FocusStates">
                <VisualState x:Name="Focused">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="StateLayer"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)"
                                     To="2.5"
                                     Duration="0:0:0.05" />
                    <DoubleAnimation Storyboard.TargetName="StateLayer"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)"
                                     To="2.5"
                                     Duration="0:0:0.05" />
                    <DoubleAnimation Storyboard.TargetName="StateLayer"
                                     Storyboard.TargetProperty="Opacity"
                                     To="0.12"
                                     Duration="0" />
                  </Storyboard>
                </VisualState>
                <VisualState x:Name="Unfocused" />
              </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
            <Rectangle x:Name="Track"
                       Fill="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ToggleButtonAssist.SwitchTrackOffBackground)}"
                       RadiusX="16"
                       RadiusY="16"
                       Stroke="{TemplateBinding BorderBrush}"
                       StrokeThickness="{TemplateBinding BorderThickness}" />
            <Grid x:Name="ThumbGrid"
                  Width="28"
                  Height="28"
                  Margin="{TemplateBinding BorderThickness}"
                  HorizontalAlignment="Left">
              <Grid.RenderTransform>
                <TranslateTransform X="0" Y="0" />
              </Grid.RenderTransform>
              <Ellipse x:Name="StateLayer"
                       Width="16"
                       Height="16"
                       HorizontalAlignment="Center"
                       VerticalAlignment="Center"
                       Fill="{DynamicResource MaterialDesign.Brush.Foreground}"
                       IsHitTestVisible="False"
                       Opacity="0.12"
                       RenderTransformOrigin="0.5,0.5">
                <Ellipse.RenderTransform>
                  <ScaleTransform ScaleX="1" ScaleY="1" />
                </Ellipse.RenderTransform>
              </Ellipse>
              <Ellipse x:Name="Thumb"
                       Width="24"
                       Height="24"
                       HorizontalAlignment="Center"
                       VerticalAlignment="Center"
                       Fill="{TemplateBinding BorderBrush}"
                       RenderTransformOrigin="0.5,0.5"
                       Stroke="{x:Null}">
                <Ellipse.Tag>
                  <system:Double>24</system:Double>
                </Ellipse.Tag>
              </Ellipse>
              <ContentPresenter x:Name="ContentPresenter"
                                Margin="{TemplateBinding Padding}"
                                HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                Content="{TemplateBinding Content}"
                                ContentTemplate="{TemplateBinding ContentTemplate}" />
            </Grid>
          </Grid>
          <ControlTemplate.Triggers>
            <Trigger Property="IsChecked" Value="True">
              <Setter Property="BorderBrush" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ToggleButtonAssist.SwitchTrackOnBackground)}" />
              <Setter TargetName="Thumb" Property="Fill" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Background}" />
              <Setter TargetName="Track" Property="Fill" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ToggleButtonAssist.SwitchTrackOnBackground)}" />
            </Trigger>
            <Trigger Property="IsChecked" Value="False">
              <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.Background}" />
            </Trigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsChecked" Value="False" />
                <Condition Property="IsMouseOver" Value="True" />
              </MultiTrigger.Conditions>
              <Setter TargetName="Thumb" Property="Fill" Value="{DynamicResource MaterialDesign.Brush.Foreground}" />
            </MultiTrigger>
            <Trigger Property="Content" Value="{x:Null}">
              <Setter TargetName="SwitchGrid" Property="Tag">
                <Setter.Value>
                  <system:Double>16</system:Double>
                </Setter.Value>
              </Setter>
            </Trigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsChecked" Value="True" />
                <Condition Property="wpf:ToggleButtonAssist.HasOnContent" Value="True" />
              </MultiTrigger.Conditions>
              <Setter TargetName="ContentPresenter" Property="Content" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ToggleButtonAssist.OnContent)}" />
              <Setter TargetName="ContentPresenter" Property="ContentTemplate" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ToggleButtonAssist.OnContentTemplate)}" />
            </MultiTrigger>
            <Trigger Property="IsEnabled" Value="False">
              <Setter TargetName="ContentPresenter" Property="Opacity" Value="0.38" />
              <Setter TargetName="StateLayer" Property="Visibility" Value="Collapsed" />
              <Setter TargetName="Thumb" Property="Opacity" Value="0.38" />
              <Setter TargetName="Track" Property="Opacity" Value="0.12" />
            </Trigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
    <Setter Property="Validation.ErrorTemplate" Value="{StaticResource MaterialDesignValidationErrorTemplate}" />
    <Setter Property="Width" Value="52" />
    <Setter Property="wpf:ToggleButtonAssist.OnContent" Value="{StaticResource SwitchCheckMarkIcon}" />
    <Setter Property="wpf:ToggleButtonAssist.SwitchTrackOffBackground" Value="{DynamicResource MaterialDesign.Brush.ToggleButton.Switch.TrackOffBackground}" />
    <Setter Property="wpf:ToggleButtonAssist.SwitchTrackOnBackground" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
  </Style>
 
  <Style x:Key="MaterialDesignSwitchLightToggleButton"
         TargetType="{x:Type ToggleButton}"
         BasedOn="{StaticResource MaterialDesignSwitchToggleButton}">
    <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.Primary.Light}" />
    <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary.Light.Foreground}" />
  </Style>
 
  <Style x:Key="MaterialDesignSwitchDarkToggleButton"
         TargetType="{x:Type ToggleButton}"
         BasedOn="{StaticResource MaterialDesignSwitchToggleButton}">
    <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.Primary.Dark}" />
    <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary.Dark.Foreground}" />
  </Style>
 
  <Style x:Key="MaterialDesignSwitchSecondaryToggleButton"
         TargetType="{x:Type ToggleButton}"
         BasedOn="{StaticResource MaterialDesignSwitchToggleButton}">
    <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.Secondary}" />
    <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.Secondary.Foreground}" />
  </Style>
 
  <Style x:Key="MaterialDesignHamburgerToggleButton" TargetType="{x:Type ToggleButton}">
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="BorderThickness" Value="1" />
    <Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}" />
    <Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.Foreground)}" />
    <Setter Property="Height" Value="37" />
    <Setter Property="HorizontalContentAlignment" Value="Center" />
    <Setter Property="Padding" Value="1" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type ToggleButton}">
          <Border Background="{TemplateBinding Property=Background}">
            <VisualStateManager.VisualStateGroups>
              <VisualStateGroup x:Name="CommonStates">
                <VisualState Name="Normal" />
                <VisualState Name="Disabled">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetProperty="(UIElement.Opacity)"
                                     To="0.38"
                                     Duration="0" />
                  </Storyboard>
                </VisualState>
              </VisualStateGroup>
              <VisualStateGroup x:Name="CheckStates">
                <VisualStateGroup.Transitions>
                  <VisualTransition From="*" To="Checked">
                    <Storyboard>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="45" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0.581" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="4.875" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1.875" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle2" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="-45" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle2" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0.581" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle2" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="4.832" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle2" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="-2.082" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle1" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0.889" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle1" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="-1" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="canvas" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)">
                        <EasingDoubleKeyFrame KeyTime="0" Value="0" />
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="-180" />
                      </DoubleAnimationUsingKeyFrames>
                    </Storyboard>
                  </VisualTransition>
                  <VisualTransition From="Checked" To="Unchecked">
                    <Storyboard>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle2" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle2" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle2" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle2" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle1" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle1" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0" />
                      </DoubleAnimationUsingKeyFrames>
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="canvas" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)">
                        <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0" />
                      </DoubleAnimationUsingKeyFrames>
                    </Storyboard>
                  </VisualTransition>
                </VisualStateGroup.Transitions>
                <VisualState x:Name="Checked">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="rectangle"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)"
                                     To="45"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="rectangle"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"
                                     To="0.581"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="rectangle"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)"
                                     To="4.875"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="rectangle"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)"
                                     To="1.875"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="rectangle2"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)"
                                     To="-45"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="rectangle2"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"
                                     To="0.581"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="rectangle2"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)"
                                     To="4.832"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="rectangle2"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)"
                                     To="-2.082"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="rectangle1"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"
                                     To="0.889"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="rectangle1"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)"
                                     To="-1"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="canvas"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)"
                                     To="-180"
                                     Duration="0" />
                  </Storyboard>
                </VisualState>
                <VisualState x:Name="Unchecked">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="rectangle"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)"
                                     To="0"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="rectangle"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"
                                     To="1"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="rectangle"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)"
                                     To="0"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="rectangle"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)"
                                     To="0"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="rectangle2"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)"
                                     To="0"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="rectangle2"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"
                                     To="1"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="rectangle2"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)"
                                     To="0"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="rectangle2"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)"
                                     To="0"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="rectangle1"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"
                                     To="1"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="rectangle1"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)"
                                     To="0"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetName="canvas"
                                     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)"
                                     To="0"
                                     Duration="0" />
                  </Storyboard>
                </VisualState>
              </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
            <Viewbox>
              <Canvas x:Name="canvas"
                      Width="24"
                      Height="24"
                      RenderTransformOrigin="0.5,0.5">
                <Canvas.RenderTransform>
                  <TransformGroup>
                    <ScaleTransform />
                    <SkewTransform />
                    <RotateTransform />
                    <TranslateTransform />
                  </TransformGroup>
                </Canvas.RenderTransform>
                <Rectangle x:Name="rectangle"
                           Canvas.Left="3"
                           Canvas.Top="6"
                           Width="18"
                           Height="2"
                           Fill="{TemplateBinding Foreground}"
                           RadiusX="0"
                           RadiusY="0"
                           RenderTransformOrigin="0.5,0.5">
                  <Rectangle.RenderTransform>
                    <TransformGroup>
                      <ScaleTransform />
                      <SkewTransform />
                      <RotateTransform />
                      <TranslateTransform />
                    </TransformGroup>
                  </Rectangle.RenderTransform>
                </Rectangle>
                <Rectangle x:Name="rectangle1"
                           Canvas.Left="3"
                           Canvas.Top="11"
                           Width="18"
                           Height="2"
                           Fill="{TemplateBinding Foreground}"
                           RadiusX="0"
                           RadiusY="0"
                           RenderTransformOrigin="0.5,0.5">
                  <Rectangle.RenderTransform>
                    <TransformGroup>
                      <ScaleTransform />
                      <SkewTransform />
                      <RotateTransform />
                      <TranslateTransform />
                    </TransformGroup>
                  </Rectangle.RenderTransform>
                </Rectangle>
                <Rectangle x:Name="rectangle2"
                           Canvas.Left="3"
                           Canvas.Top="16"
                           Width="18"
                           Height="2"
                           Fill="{TemplateBinding Foreground}"
                           RadiusX="0"
                           RadiusY="0"
                           RenderTransformOrigin="0.5,0.5">
                  <Rectangle.RenderTransform>
                    <TransformGroup>
                      <ScaleTransform />
                      <SkewTransform />
                      <RotateTransform />
                      <TranslateTransform />
                    </TransformGroup>
                  </Rectangle.RenderTransform>
                </Rectangle>
              </Canvas>
            </Viewbox>
          </Border>
          <ControlTemplate.Triggers>
            <Trigger Property="Button.IsDefaulted" Value="true" />
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
    <Setter Property="VerticalContentAlignment" Value="Center" />
    <Setter Property="Width" Value="37" />
  </Style>
</ResourceDictionary>