Themes/MaterialDesignTheme.FlipperClassic.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:po="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
                    xmlns:wpf="clr-namespace:MaterialDesignThemes.Wpf">
 
  <Style TargetType="{x:Type wpf:FlipperClassic}">
    <Setter Property="KeyboardNavigation.IsTabStop" Value="False" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type wpf:FlipperClassic}">
          <ControlTemplate.Resources>
            <SineEase x:Key="FlipEase"
                      EasingMode="EaseInOut"
                      po:Freeze="True" />
          </ControlTemplate.Resources>
          <Border x:Name="Border"
                  Background="{TemplateBinding Background}"
                  BorderBrush="{TemplateBinding BorderBrush}"
                  BorderThickness="{TemplateBinding BorderThickness}">
            <VisualStateManager.VisualStateGroups>
              <VisualStateGroup x:Name="FlipStates">
                <VisualStateGroup.Transitions>
                  <VisualTransition From="Unflipped" To="Flipped">
                    <Storyboard FillBehavior="HoldEnd">
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="Plane3D"
                                                     Storyboard.TargetProperty="RotationY"
                                                     Duration="0:0:0.4">
                        <EasingDoubleKeyFrame EasingFunction="{StaticResource FlipEase}"
                                              KeyTime="0:0:0.0"
                                              Value="0" />
                        <EasingDoubleKeyFrame EasingFunction="{StaticResource FlipEase}"
                                              KeyTime="0:0:0.2"
                                              Value="-90" />
                        <EasingDoubleKeyFrame EasingFunction="{StaticResource FlipEase}"
                                              KeyTime="0:0:0.2"
                                              Value="90" />
                        <EasingDoubleKeyFrame EasingFunction="{StaticResource FlipEase}"
                                              KeyTime="0:0:0.4"
                                              Value="0" />
                      </DoubleAnimationUsingKeyFrames>
                      <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackContentPresenter" Storyboard.TargetProperty="Visibility">
                        <DiscreteObjectKeyFrame KeyTime="0:0:0.2" Value="{x:Static Visibility.Visible}" />
                      </ObjectAnimationUsingKeyFrames>
                      <ObjectAnimationUsingKeyFrames Storyboard.TargetName="FrontContentPresenter" Storyboard.TargetProperty="Visibility">
                        <DiscreteObjectKeyFrame KeyTime="0:0:0.2" Value="{x:Static Visibility.Collapsed}" />
                      </ObjectAnimationUsingKeyFrames>
                    </Storyboard>
                  </VisualTransition>
                  <VisualTransition From="Flipped" To="Unflipped">
                    <Storyboard FillBehavior="HoldEnd">
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="Plane3D"
                                                     Storyboard.TargetProperty="RotationY"
                                                     Duration="0:0:0.4">
                        <EasingDoubleKeyFrame EasingFunction="{StaticResource FlipEase}"
                                              KeyTime="0:0:0.0"
                                              Value="0" />
                        <EasingDoubleKeyFrame EasingFunction="{StaticResource FlipEase}"
                                              KeyTime="0:0:0.2"
                                              Value="90" />
                        <EasingDoubleKeyFrame EasingFunction="{StaticResource FlipEase}"
                                              KeyTime="0:0:0.2"
                                              Value="-90" />
                        <EasingDoubleKeyFrame EasingFunction="{StaticResource FlipEase}"
                                              KeyTime="0:0:0.4"
                                              Value="0" />
                      </DoubleAnimationUsingKeyFrames>
                      <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackContentPresenter" Storyboard.TargetProperty="Visibility">
                        <DiscreteObjectKeyFrame KeyTime="0:0:0.2" Value="{x:Static Visibility.Collapsed}" />
                      </ObjectAnimationUsingKeyFrames>
                      <ObjectAnimationUsingKeyFrames Storyboard.TargetName="FrontContentPresenter" Storyboard.TargetProperty="Visibility">
                        <DiscreteObjectKeyFrame KeyTime="0:0:0.2" Value="{x:Static Visibility.Visible}" />
                      </ObjectAnimationUsingKeyFrames>
                    </Storyboard>
                  </VisualTransition>
                </VisualStateGroup.Transitions>
                <VisualState x:Name="Unflipped">
                  <Storyboard>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackContentPresenter" Storyboard.TargetProperty="Visibility">
                      <DiscreteObjectKeyFrame Value="{x:Static Visibility.Collapsed}" />
                    </ObjectAnimationUsingKeyFrames>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="FrontContentPresenter" Storyboard.TargetProperty="Visibility">
                      <DiscreteObjectKeyFrame Value="{x:Static Visibility.Visible}" />
                    </ObjectAnimationUsingKeyFrames>
                  </Storyboard>
                </VisualState>
                <VisualState x:Name="Flipped">
                  <Storyboard>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackContentPresenter" Storyboard.TargetProperty="Visibility">
                      <DiscreteObjectKeyFrame Value="{x:Static Visibility.Visible}" />
                    </ObjectAnimationUsingKeyFrames>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="FrontContentPresenter" Storyboard.TargetProperty="Visibility">
                      <DiscreteObjectKeyFrame Value="{x:Static Visibility.Collapsed}" />
                    </ObjectAnimationUsingKeyFrames>
                  </Storyboard>
                </VisualState>
              </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
            <wpf:Plane3D x:Name="Plane3D"
                         RotationY="0"
                         ZFactor="2.055">
              <Grid>
                <ContentPresenter x:Name="FrontContentPresenter"
                                  Margin="{TemplateBinding Padding}"
                                  Content="{TemplateBinding FrontContent}"
                                  ContentStringFormat="{TemplateBinding FrontContentStringFormat}"
                                  ContentTemplate="{TemplateBinding FrontContentTemplate}"
                                  ContentTemplateSelector="{TemplateBinding FrontContentTemplateSelector}"
                                  RenderTransformOrigin=".5,.5" />
                <ContentPresenter x:Name="BackContentPresenter"
                                  Margin="{TemplateBinding Padding}"
                                  Content="{TemplateBinding BackContent}"
                                  ContentStringFormat="{TemplateBinding BackContentStringFormat}"
                                  ContentTemplate="{TemplateBinding BackContentTemplate}"
                                  ContentTemplateSelector="{TemplateBinding BackContentTemplateSelector}"
                                  RenderTransformOrigin=".5,.5"
                                  Visibility="Hidden" />
              </Grid>
            </wpf:Plane3D>
          </Border>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
 
  <Style x:Key="MaterialDesignCardFlipperClassic"
         TargetType="{x:Type wpf:FlipperClassic}"
         BasedOn="{StaticResource {x:Type wpf:FlipperClassic}}">
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type wpf:FlipperClassic}">
          <ControlTemplate.Resources>
            <SineEase x:Key="FlipEase"
                      EasingMode="EaseInOut"
                      po:Freeze="True" />
          </ControlTemplate.Resources>
          <Border x:Name="Border"
                  Background="{TemplateBinding Background}"
                  BorderBrush="{TemplateBinding BorderBrush}"
                  BorderThickness="{TemplateBinding BorderThickness}">
            <VisualStateManager.VisualStateGroups>
              <VisualStateGroup x:Name="FlipStates">
                <VisualStateGroup.Transitions>
                  <VisualTransition From="Unflipped" To="Flipped">
                    <Storyboard FillBehavior="HoldEnd">
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="PART_Plane3D"
                                                     Storyboard.TargetProperty="RotationY"
                                                     Duration="0:0:0.4">
                        <EasingDoubleKeyFrame EasingFunction="{StaticResource FlipEase}"
                                              KeyTime="0:0:0.0"
                                              Value="0" />
                        <EasingDoubleKeyFrame EasingFunction="{StaticResource FlipEase}"
                                              KeyTime="0:0:0.2"
                                              Value="-90" />
                        <EasingDoubleKeyFrame EasingFunction="{StaticResource FlipEase}"
                                              KeyTime="0:0:0.2"
                                              Value="90" />
                        <EasingDoubleKeyFrame EasingFunction="{StaticResource FlipEase}"
                                              KeyTime="0:0:0.4"
                                              Value="0" />
                      </DoubleAnimationUsingKeyFrames>
                      <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackContentPresenter" Storyboard.TargetProperty="Visibility">
                        <DiscreteObjectKeyFrame KeyTime="0:0:0.2" Value="{x:Static Visibility.Visible}" />
                      </ObjectAnimationUsingKeyFrames>
                      <ObjectAnimationUsingKeyFrames Storyboard.TargetName="FrontContentPresenter" Storyboard.TargetProperty="Visibility">
                        <DiscreteObjectKeyFrame KeyTime="0:0:0.2" Value="{x:Static Visibility.Collapsed}" />
                      </ObjectAnimationUsingKeyFrames>
                    </Storyboard>
                  </VisualTransition>
                  <VisualTransition From="Flipped" To="Unflipped">
                    <Storyboard FillBehavior="HoldEnd">
                      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="PART_Plane3D"
                                                     Storyboard.TargetProperty="RotationY"
                                                     Duration="0:0:0.4">
                        <EasingDoubleKeyFrame EasingFunction="{StaticResource FlipEase}"
                                              KeyTime="0:0:0.0"
                                              Value="0" />
                        <EasingDoubleKeyFrame EasingFunction="{StaticResource FlipEase}"
                                              KeyTime="0:0:0.2"
                                              Value="90" />
                        <EasingDoubleKeyFrame EasingFunction="{StaticResource FlipEase}"
                                              KeyTime="0:0:0.2"
                                              Value="-90" />
                        <EasingDoubleKeyFrame EasingFunction="{StaticResource FlipEase}"
                                              KeyTime="0:0:0.4"
                                              Value="0" />
                      </DoubleAnimationUsingKeyFrames>
                      <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackContentPresenter" Storyboard.TargetProperty="Visibility">
                        <DiscreteObjectKeyFrame KeyTime="0:0:0.2" Value="{x:Static Visibility.Collapsed}" />
                      </ObjectAnimationUsingKeyFrames>
                      <ObjectAnimationUsingKeyFrames Storyboard.TargetName="FrontContentPresenter" Storyboard.TargetProperty="Visibility">
                        <DiscreteObjectKeyFrame KeyTime="0:0:0.2" Value="{x:Static Visibility.Visible}" />
                      </ObjectAnimationUsingKeyFrames>
                    </Storyboard>
                  </VisualTransition>
                </VisualStateGroup.Transitions>
 
                <VisualState x:Name="Unflipped">
                  <Storyboard>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackContentPresenter" Storyboard.TargetProperty="Visibility">
                      <DiscreteObjectKeyFrame Value="{x:Static Visibility.Collapsed}" />
                    </ObjectAnimationUsingKeyFrames>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="FrontContentPresenter" Storyboard.TargetProperty="Visibility">
                      <DiscreteObjectKeyFrame Value="{x:Static Visibility.Visible}" />
                    </ObjectAnimationUsingKeyFrames>
                  </Storyboard>
                </VisualState>
                <VisualState x:Name="Flipped">
                  <Storyboard>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackContentPresenter" Storyboard.TargetProperty="Visibility">
                      <DiscreteObjectKeyFrame Value="{x:Static Visibility.Visible}" />
                    </ObjectAnimationUsingKeyFrames>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="FrontContentPresenter" Storyboard.TargetProperty="Visibility">
                      <DiscreteObjectKeyFrame Value="{x:Static Visibility.Collapsed}" />
                    </ObjectAnimationUsingKeyFrames>
                  </Storyboard>
                </VisualState>
              </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
            <wpf:Plane3D x:Name="PART_Plane3D"
                         RotationY="0"
                         ZFactor="2.055">
              <wpf:Card wpf:ElevationAssist.Elevation="{TemplateBinding wpf:ElevationAssist.Elevation}"
                        Style="{TemplateBinding wpf:FlipperAssist.CardStyle}"
                        UniformCornerRadius="{TemplateBinding wpf:FlipperAssist.UniformCornerRadius}">
                <Grid>
                  <ContentPresenter x:Name="FrontContentPresenter"
                                    Margin="{TemplateBinding Padding}"
                                    Content="{TemplateBinding FrontContent}"
                                    ContentStringFormat="{TemplateBinding FrontContentStringFormat}"
                                    ContentTemplate="{TemplateBinding FrontContentTemplate}"
                                    ContentTemplateSelector="{TemplateBinding FrontContentTemplateSelector}"
                                    RenderTransformOrigin=".5,.5" />
                  <ContentPresenter x:Name="BackContentPresenter"
                                    Margin="{TemplateBinding Padding}"
                                    Content="{TemplateBinding BackContent}"
                                    ContentStringFormat="{TemplateBinding BackContentStringFormat}"
                                    ContentTemplate="{TemplateBinding BackContentTemplate}"
                                    ContentTemplateSelector="{TemplateBinding BackContentTemplateSelector}"
                                    RenderTransformOrigin=".5,.5"
                                    Visibility="Collapsed" />
                </Grid>
              </wpf:Card>
            </wpf:Plane3D>
          </Border>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
    <Setter Property="wpf:ElevationAssist.Elevation" Value="Dp1" />
  </Style>
</ResourceDictionary>