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> |