Themes/MaterialDesignTheme.TabControl.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:wpf="clr-namespace:MaterialDesignThemes.Wpf">
 
  <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TextBlock.xaml" />
  </ResourceDictionary.MergedDictionaries>
 
  <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>
 
  <Style x:Key="MaterialDesignTabControlBase" TargetType="{x:Type TabControl}">
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.Foreground)}" />
    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    <Setter Property="Padding" Value="0" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type TabControl}">
          <DockPanel KeyboardNavigation.TabNavigation="Local">
            <wpf:ColorZone x:Name="PART_HeaderZone"
                           VerticalAlignment="Stretch"
                           Panel.ZIndex="1"
                           wpf:ElevationAssist.Elevation="{TemplateBinding wpf:ElevationAssist.Elevation}"
                           Background="{TemplateBinding wpf:ColorZoneAssist.Background}"
                           DockPanel.Dock="Top"
                           Focusable="False">
              <ScrollViewer wpf:ScrollViewerAssist.BubbleVerticalScroll="True"
                            wpf:ScrollViewerAssist.SupportHorizontalScroll="True"
                            wpf:ScrollViewerAssist.IgnorePadding="{Binding Path=(wpf:ScrollViewerAssist.IgnorePadding), RelativeSource={RelativeSource TemplatedParent}}"
                            wpf:ScrollViewerAssist.PaddingMode="{Binding Path=(wpf:ScrollViewerAssist.PaddingMode), RelativeSource={RelativeSource TemplatedParent}}"
                            HorizontalScrollBarVisibility="Hidden"
                            VerticalScrollBarVisibility="Hidden">
                <StackPanel>
                  <UniformGrid x:Name="CenteredHeaderPanel"
                               HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                               Margin="{Binding Path=(wpf:TabAssist.HeaderPanelMargin), RelativeSource={RelativeSource TemplatedParent}}"
                               VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                               wpf:TabAssist.BindableIsItemsHost="{Binding Visibility, RelativeSource={RelativeSource Self}}"
                               Focusable="False"
                               KeyboardNavigation.TabIndex="1"
                               Rows="1" />
                  <VirtualizingStackPanel x:Name="HeaderPanel"
                                          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                          Margin="{Binding Path=(wpf:TabAssist.HeaderPanelMargin), RelativeSource={RelativeSource TemplatedParent}}"
                                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                          wpf:TabAssist.BindableIsItemsHost="{Binding Visibility, RelativeSource={RelativeSource Self}}"
                                          Focusable="False"
                                          KeyboardNavigation.TabIndex="1"
                                          Orientation="Horizontal" />
                </StackPanel>
              </ScrollViewer>
            </wpf:ColorZone>
            <Border x:Name="PART_BorderSelectedContent"
                    Padding="{TemplateBinding Padding}"
                    HorizontalAlignment="Stretch"
                    VerticalAlignment="Stretch"
                    Panel.ZIndex="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(Panel.ZIndex)}"
                    Background="{x:Null}"
                    Focusable="False">
              <ContentPresenter x:Name="PART_SelectedContentHost"
                                Margin="{TemplateBinding Padding}"
                                ContentSource="SelectedContent"
                                ContentStringFormat="{TemplateBinding SelectedContentStringFormat}"
                                ContentTemplate="{TemplateBinding SelectedContentTemplate}"
                                ContentTemplateSelector="{TemplateBinding SelectedContentTemplateSelector}"
                                Focusable="False"
                                SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
            </Border>
          </DockPanel>
 
          <ControlTemplate.Triggers>
            <Trigger Property="HorizontalContentAlignment" Value="Stretch">
              <Setter TargetName="CenteredHeaderPanel" Property="Visibility" Value="Visible" />
              <Setter TargetName="HeaderPanel" Property="Visibility" Value="Collapsed" />
            </Trigger>
 
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="HorizontalContentAlignment" Value="Center" />
                <Condition Property="wpf:TabAssist.HasUniformTabWidth" Value="False" />
              </MultiTrigger.Conditions>
              <MultiTrigger.Setters>
                <Setter TargetName="HeaderPanel" Property="Visibility" Value="Visible" />
                <Setter TargetName="CenteredHeaderPanel" Property="Visibility" Value="Collapsed" />
              </MultiTrigger.Setters>
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="HorizontalContentAlignment" Value="Center" />
                <Condition Property="wpf:TabAssist.HasUniformTabWidth" Value="True" />
              </MultiTrigger.Conditions>
              <MultiTrigger.Setters>
                <Setter TargetName="HeaderPanel" Property="Visibility" Value="Collapsed" />
                <Setter TargetName="CenteredHeaderPanel" Property="Visibility" Value="Visible" />
              </MultiTrigger.Setters>
            </MultiTrigger>
 
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="HorizontalContentAlignment" Value="Left" />
                <Condition Property="wpf:TabAssist.HasUniformTabWidth" Value="False" />
              </MultiTrigger.Conditions>
              <MultiTrigger.Setters>
                <Setter TargetName="HeaderPanel" Property="Visibility" Value="Visible" />
                <Setter TargetName="CenteredHeaderPanel" Property="Visibility" Value="Collapsed" />
              </MultiTrigger.Setters>
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="HorizontalContentAlignment" Value="Left" />
                <Condition Property="wpf:TabAssist.HasUniformTabWidth" Value="True" />
              </MultiTrigger.Conditions>
              <MultiTrigger.Setters>
                <Setter TargetName="HeaderPanel" Property="Visibility" Value="Collapsed" />
                <Setter TargetName="CenteredHeaderPanel" Property="Visibility" Value="Visible" />
              </MultiTrigger.Setters>
            </MultiTrigger>
 
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="HorizontalContentAlignment" Value="Right" />
                <Condition Property="wpf:TabAssist.HasUniformTabWidth" Value="False" />
              </MultiTrigger.Conditions>
              <MultiTrigger.Setters>
                <Setter TargetName="HeaderPanel" Property="Visibility" Value="Visible" />
                <Setter TargetName="CenteredHeaderPanel" Property="Visibility" Value="Collapsed" />
              </MultiTrigger.Setters>
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="HorizontalContentAlignment" Value="Right" />
                <Condition Property="wpf:TabAssist.HasUniformTabWidth" Value="True" />
              </MultiTrigger.Conditions>
              <MultiTrigger.Setters>
                <Setter TargetName="HeaderPanel" Property="Visibility" Value="Collapsed" />
                <Setter TargetName="CenteredHeaderPanel" Property="Visibility" Value="Visible" />
              </MultiTrigger.Setters>
            </MultiTrigger>
 
            <Trigger Property="TabStripPlacement" Value="Bottom">
              <Setter TargetName="PART_HeaderZone" Property="DockPanel.Dock" Value="Bottom" />
            </Trigger>
            <Trigger Property="TabStripPlacement" Value="Left">
              <Setter TargetName="CenteredHeaderPanel" Property="Columns" Value="1" />
              <Setter TargetName="CenteredHeaderPanel" Property="Rows" Value="0" />
              <Setter TargetName="PART_HeaderZone" Property="DockPanel.Dock" Value="Left" />
            </Trigger>
            <Trigger Property="TabStripPlacement" Value="Right">
              <Setter TargetName="CenteredHeaderPanel" Property="Columns" Value="1" />
              <Setter TargetName="CenteredHeaderPanel" Property="Rows" Value="0" />
              <Setter TargetName="PART_HeaderZone" Property="DockPanel.Dock" Value="Right" />
            </Trigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
    <Setter Property="VerticalContentAlignment" Value="Stretch" />
    <Setter Property="wpf:ColorZoneAssist.Mode" Value="PrimaryMid" />
    <Setter Property="wpf:ElevationAssist.Elevation" Value="Dp4" />
    <Setter Property="wpf:RippleAssist.Feedback" Value="{DynamicResource MaterialDesign.Brush.Button.Ripple}" />
    <Setter Property="wpf:TabAssist.HasUniformTabWidth" Value="False" />
  </Style>
 
  <Style x:Key="MaterialDesignTabControl"
         TargetType="{x:Type TabControl}"
         BasedOn="{StaticResource MaterialDesignTabControlBase}">
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="wpf:ColorZoneAssist.Background" Value="Transparent" />
    <Setter Property="wpf:ElevationAssist.Elevation" Value="Dp0" />
    <Setter Property="wpf:TabAssist.HasFilledTab" Value="False" />
  </Style>
 
  <Style x:Key="MaterialDesignUniformTabControl"
         TargetType="{x:Type TabControl}"
         BasedOn="{StaticResource MaterialDesignTabControl}">
    <Setter Property="wpf:TabAssist.HasUniformTabWidth" Value="True" />
  </Style>
 
  <Style x:Key="MaterialDesignFilledTabControl"
         TargetType="{x:Type TabControl}"
         BasedOn="{StaticResource MaterialDesignTabControlBase}">
    <Setter Property="wpf:TabAssist.HasFilledTab" Value="True" />
 
    <Style.Triggers>
      <Trigger Property="wpf:ColorZoneAssist.Mode" Value="Standard">
        <Setter Property="wpf:ColorZoneAssist.Background" Value="{DynamicResource MaterialDesign.Brush.Foreground}" />
        <Setter Property="wpf:ColorZoneAssist.Foreground" Value="{DynamicResource MaterialDesign.Brush.Foreground}" />
      </Trigger>
      <Trigger Property="wpf:ColorZoneAssist.Mode" Value="PrimaryMid">
        <Setter Property="wpf:ColorZoneAssist.Background" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
        <Setter Property="wpf:ColorZoneAssist.Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary.Foreground}" />
      </Trigger>
      <Trigger Property="wpf:ColorZoneAssist.Mode" Value="PrimaryLight">
        <Setter Property="wpf:ColorZoneAssist.Background" Value="{DynamicResource MaterialDesign.Brush.Primary.Light}" />
        <Setter Property="wpf:ColorZoneAssist.Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary.Light.Foreground}" />
      </Trigger>
      <Trigger Property="wpf:ColorZoneAssist.Mode" Value="PrimaryDark">
        <Setter Property="wpf:ColorZoneAssist.Background" Value="{DynamicResource MaterialDesign.Brush.Primary.Dark}" />
        <Setter Property="wpf:ColorZoneAssist.Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary.Dark.Foreground}" />
      </Trigger>
      <Trigger Property="wpf:ColorZoneAssist.Mode" Value="SecondaryLight">
        <Setter Property="wpf:ColorZoneAssist.Background" Value="{DynamicResource MaterialDesign.Brush.Secondary.Light}" />
        <Setter Property="wpf:ColorZoneAssist.Foreground" Value="{DynamicResource MaterialDesign.Brush.Secondary.Light.Foreground}" />
      </Trigger>
      <Trigger Property="wpf:ColorZoneAssist.Mode" Value="SecondaryMid">
        <Setter Property="wpf:ColorZoneAssist.Background" Value="{DynamicResource MaterialDesign.Brush.Secondary}" />
        <Setter Property="wpf:ColorZoneAssist.Foreground" Value="{DynamicResource MaterialDesign.Brush.Secondary.Foreground}" />
      </Trigger>
      <Trigger Property="wpf:ColorZoneAssist.Mode" Value="SecondaryDark">
        <Setter Property="wpf:ColorZoneAssist.Background" Value="{DynamicResource MaterialDesign.Brush.Secondary.Dark}" />
        <Setter Property="wpf:ColorZoneAssist.Foreground" Value="{DynamicResource MaterialDesign.Brush.Secondary.Dark.Foreground}" />
      </Trigger>
      <Trigger Property="wpf:ColorZoneAssist.Mode" Value="Custom">
        <Setter Property="wpf:ColorZoneAssist.Background" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ColorZoneAssist.Background)}" />
        <Setter Property="wpf:ColorZoneAssist.Foreground" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ColorZoneAssist.Foreground)}" />
      </Trigger>
    </Style.Triggers>
  </Style>
 
  <Style x:Key="MaterialDesignFilledUniformTabControl"
         TargetType="{x:Type TabControl}"
         BasedOn="{StaticResource MaterialDesignFilledTabControl}">
    <Setter Property="wpf:TabAssist.HasUniformTabWidth" Value="True" />
  </Style>
 
  <Style x:Key="MaterialDesignTabItem" TargetType="{x:Type TabItem}">
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}" />
    <!-- Foreground is for the content, not the header -->
    <Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabControl}}, Path=(TextElement.Foreground)}" />
    <Setter Property="Height" Value="48" />
    <Setter Property="MinWidth" Value="90" />
    <Setter Property="Padding" Value="16,12" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type TabItem}">
          <ControlTemplate.Resources>
            <Storyboard x:Key="SelectHorizontalTabItem">
              <DoubleAnimation Storyboard.TargetName="ScaleTransform"
                               Storyboard.TargetProperty="ScaleY"
                               From="0"
                               To="1"
                               Duration="0" />
              <DoubleAnimation Storyboard.TargetName="ScaleTransform"
                               Storyboard.TargetProperty="ScaleX"
                               From="0"
                               To="1"
                               Duration="0:0:0.3">
                <DoubleAnimation.EasingFunction>
                  <SineEase EasingMode="EaseOut" />
                </DoubleAnimation.EasingFunction>
              </DoubleAnimation>
              <DoubleAnimation BeginTime="0:0:0.3"
                               Storyboard.TargetName="PART_BackgroundSelection"
                               Storyboard.TargetProperty="Opacity"
                               To="0.12"
                               Duration="0" />
            </Storyboard>
            <Storyboard x:Key="SelectVerticalTabItem">
              <DoubleAnimation Storyboard.TargetName="ScaleTransform"
                               Storyboard.TargetProperty="ScaleX"
                               From="0"
                               To="1"
                               Duration="0" />
              <DoubleAnimation Storyboard.TargetName="ScaleTransform"
                               Storyboard.TargetProperty="ScaleY"
                               From="0"
                               To="1"
                               Duration="0:0:0.3">
                <DoubleAnimation.EasingFunction>
                  <SineEase EasingMode="EaseOut" />
                </DoubleAnimation.EasingFunction>
              </DoubleAnimation>
              <DoubleAnimation BeginTime="0:0:0.3"
                               Storyboard.TargetName="PART_BackgroundSelection"
                               Storyboard.TargetProperty="Opacity"
                               To="0.12"
                               Duration="0" />
            </Storyboard>
          </ControlTemplate.Resources>
          <Grid x:Name="Root">
            <!-- This is the Header label ColorZone. -->
            <wpf:ColorZone x:Name="ColorZoneHeader"
                           HorizontalAlignment="Stretch"
                           VerticalAlignment="Stretch"
                           wpf:ColorZoneAssist.Background="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ColorZoneAssist.Background)}"
                           wpf:ColorZoneAssist.Foreground="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ColorZoneAssist.Foreground)}"
                           Focusable="False"
                           Mode="Custom">
              <wpf:Ripple x:Name="contentPresenter"
                          Padding="{TemplateBinding Padding}"
                          HorizontalContentAlignment="Center"
                          VerticalContentAlignment="Center"
                          Content="{TemplateBinding Header}"
                          ContentStringFormat="{TemplateBinding HeaderStringFormat}"
                          ContentTemplate="{TemplateBinding HeaderTemplate}"
                          ContentTemplateSelector="{TemplateBinding HeaderTemplateSelector}"
                          Focusable="False"
                          Opacity=".82"
                          RecognizesAccessKey="True"
                          SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                          TextBlock.FontSize="14"
                          TextBlock.FontWeight="Medium"
                          TextOptions.TextFormattingMode="Ideal"
                          TextOptions.TextRenderingMode="Auto"
                          Typography.Capitals="{TemplateBinding Typography.Capitals}" />
            </wpf:ColorZone>
            <Border x:Name="SelectionHighlightBorder"
                    BorderBrush="{Binding Path=Foreground, ElementName=ColorZoneHeader}"
                    BorderThickness="0,0,0,2"
                    RenderTransformOrigin="0.5,0.5"
                    Visibility="Hidden">
              <Border.RenderTransform>
                <ScaleTransform x:Name="ScaleTransform" ScaleX="0" ScaleY="0" />
              </Border.RenderTransform>
              <Rectangle x:Name="PART_BackgroundSelection"
                         Fill="{TemplateBinding Background}"
                         IsHitTestVisible="False"
                         Opacity="0.0" />
            </Border>
          </Grid>
          <ControlTemplate.Triggers>
            <Trigger Property="IsEnabled" Value="False">
              <Setter Property="Opacity" Value="0.38" />
            </Trigger>
            <Trigger Property="IsSelected" Value="True">
              <Setter TargetName="SelectionHighlightBorder" Property="Visibility" Value="Visible" />
              <Setter TargetName="contentPresenter" Property="Opacity" Value="1" />
              <Setter TargetName="contentPresenter" Property="wpf:RippleAssist.IsDisabled" Value="True" />
            </Trigger>
            <DataTrigger Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Bottom">
              <Setter TargetName="SelectionHighlightBorder" Property="BorderThickness" Value="0,2,0,0" />
            </DataTrigger>
            <DataTrigger Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Left">
              <Setter TargetName="SelectionHighlightBorder" Property="BorderThickness" Value="0,0,2,0" />
            </DataTrigger>
            <DataTrigger Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Right">
              <Setter TargetName="SelectionHighlightBorder" Property="BorderThickness" Value="2,0,0,0" />
            </DataTrigger>
 
            <!-- Selected TabItem animations (vary depending on TabControl.TabStripPlacement value) -->
            <MultiDataTrigger>
              <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsSelected}" Value="True" />
                <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Top" />
              </MultiDataTrigger.Conditions>
              <MultiDataTrigger.EnterActions>
                <BeginStoryboard Storyboard="{StaticResource SelectHorizontalTabItem}" />
              </MultiDataTrigger.EnterActions>
            </MultiDataTrigger>
            <MultiDataTrigger>
              <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsSelected}" Value="True" />
                <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Bottom" />
              </MultiDataTrigger.Conditions>
              <MultiDataTrigger.EnterActions>
                <BeginStoryboard Storyboard="{StaticResource SelectHorizontalTabItem}" />
              </MultiDataTrigger.EnterActions>
            </MultiDataTrigger>
            <MultiDataTrigger>
              <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsSelected}" Value="True" />
                <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Left" />
              </MultiDataTrigger.Conditions>
              <MultiDataTrigger.EnterActions>
                <BeginStoryboard Storyboard="{StaticResource SelectVerticalTabItem}" />
              </MultiDataTrigger.EnterActions>
            </MultiDataTrigger>
            <MultiDataTrigger>
              <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsSelected}" Value="True" />
                <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Right" />
              </MultiDataTrigger.Conditions>
              <MultiDataTrigger.EnterActions>
                <BeginStoryboard Storyboard="{StaticResource SelectVerticalTabItem}" />
              </MultiDataTrigger.EnterActions>
            </MultiDataTrigger>
 
            <!-- Force the header foreground do be MaterialDesign.Brush.Foreground by default (only for not filled tabs) -->
            <Trigger Property="wpf:TabAssist.HasFilledTab" Value="False">
              <Setter TargetName="ColorZoneHeader" Property="wpf:ColorZoneAssist.Foreground" Value="{DynamicResource MaterialDesign.Brush.Foreground}" />
            </Trigger>
 
            <!-- The header foreground color change when focused (only for not filled tabs) -->
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="wpf:TabAssist.HasFilledTab" Value="False" />
                <Condition Property="IsSelected" Value="True" />
                <Condition Property="wpf:ColorZoneAssist.Mode" Value="Standard" />
              </MultiTrigger.Conditions>
              <Setter TargetName="ColorZoneHeader" Property="wpf:ColorZoneAssist.Foreground" Value="{DynamicResource MaterialDesign.Brush.Foreground}" />
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="wpf:TabAssist.HasFilledTab" Value="False" />
                <Condition Property="IsSelected" Value="True" />
                <Condition Property="wpf:ColorZoneAssist.Mode" Value="PrimaryLight" />
              </MultiTrigger.Conditions>
              <Setter TargetName="ColorZoneHeader" Property="wpf:ColorZoneAssist.Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary.Light}" />
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="wpf:TabAssist.HasFilledTab" Value="False" />
                <Condition Property="IsSelected" Value="True" />
                <Condition Property="wpf:ColorZoneAssist.Mode" Value="PrimaryMid" />
              </MultiTrigger.Conditions>
              <Setter TargetName="ColorZoneHeader" Property="wpf:ColorZoneAssist.Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="wpf:TabAssist.HasFilledTab" Value="False" />
                <Condition Property="IsSelected" Value="True" />
                <Condition Property="wpf:ColorZoneAssist.Mode" Value="PrimaryDark" />
              </MultiTrigger.Conditions>
              <Setter TargetName="ColorZoneHeader" Property="wpf:ColorZoneAssist.Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary.Dark}" />
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="wpf:TabAssist.HasFilledTab" Value="False" />
                <Condition Property="IsSelected" Value="True" />
                <Condition Property="wpf:ColorZoneAssist.Mode" Value="SecondaryLight" />
              </MultiTrigger.Conditions>
              <Setter TargetName="ColorZoneHeader" Property="wpf:ColorZoneAssist.Foreground" Value="{DynamicResource MaterialDesign.Brush.Secondary.Light}" />
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="wpf:TabAssist.HasFilledTab" Value="False" />
                <Condition Property="IsSelected" Value="True" />
                <Condition Property="wpf:ColorZoneAssist.Mode" Value="SecondaryMid" />
              </MultiTrigger.Conditions>
              <Setter TargetName="ColorZoneHeader" Property="wpf:ColorZoneAssist.Foreground" Value="{DynamicResource MaterialDesign.Brush.Secondary}" />
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="wpf:TabAssist.HasFilledTab" Value="False" />
                <Condition Property="IsSelected" Value="True" />
                <Condition Property="wpf:ColorZoneAssist.Mode" Value="SecondaryDark" />
              </MultiTrigger.Conditions>
              <Setter TargetName="ColorZoneHeader" Property="wpf:ColorZoneAssist.Foreground" Value="{DynamicResource MaterialDesign.Brush.Secondary.Dark}" />
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="wpf:TabAssist.HasFilledTab" Value="False" />
                <Condition Property="IsSelected" Value="True" />
                <Condition Property="wpf:ColorZoneAssist.Mode" Value="Custom" />
              </MultiTrigger.Conditions>
              <Setter TargetName="ColorZoneHeader" Property="wpf:ColorZoneAssist.Foreground" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ColorZoneAssist.Foreground)}" />
            </MultiTrigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
    <Setter Property="wpf:ColorZoneAssist.Background" Value="Transparent" />
    <Setter Property="wpf:ColorZoneAssist.Foreground" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabControl}}, Path=(wpf:ColorZoneAssist.Foreground)}" />
    <Setter Property="wpf:ColorZoneAssist.Mode" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabControl}}, Path=(wpf:ColorZoneAssist.Mode)}" />
    <Setter Property="wpf:DialogHost.RestoreFocusElement" Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=TabControl}}" />
    <Setter Property="wpf:RippleAssist.Feedback" Value="{DynamicResource MaterialDesign.Brush.Button.Ripple}" />
    <Setter Property="wpf:TabAssist.HasFilledTab" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabControl}}, Path=(wpf:TabAssist.HasFilledTab)}" />
  </Style>
 
  <!-- NAVIGATION RAIL -->
 
  <Style x:Key="MaterialDesignNavigationRailTabItem" TargetType="{x:Type TabItem}">
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="FocusVisualStyle" Value="{x:Null}" />
    <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.Foreground}" />
    <Setter Property="Height" Value="72" />
    <Setter Property="Padding" Value="0" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type TabItem}">
          <Grid x:Name="Root" Cursor="Hand">
            <Grid>
              <Border x:Name="MouseOverBorder"
                      Background="{TemplateBinding Background}"
                      CornerRadius="{Binding Path=(wpf:NavigationRailAssist.SelectionCornerRadius), RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}"
                      Opacity=".08"
                      Visibility="Hidden" />
              <wpf:ColorZone x:Name="colorZone"
                             HorizontalAlignment="Stretch"
                             VerticalAlignment="Stretch"
                             wpf:ColorZoneAssist.Background="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ColorZoneAssist.Background)}"
                             wpf:ColorZoneAssist.Foreground="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ColorZoneAssist.Foreground)}"
                             Background="{x:Null}"
                             Cursor="Hand"
                             Focusable="False"
                             Mode="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ColorZoneAssist.Mode)}">
                <wpf:Ripple x:Name="contentPresenter"
                            Padding="{TemplateBinding Padding}"
                            HorizontalContentAlignment="Center"
                            VerticalContentAlignment="Center"
                            ClipToBounds="True"
                            Content="{TemplateBinding Header}"
                            ContentStringFormat="{TemplateBinding HeaderStringFormat}"
                            ContentTemplate="{TemplateBinding HeaderTemplate}"
                            ContentTemplateSelector="{TemplateBinding HeaderTemplateSelector}"
                            Focusable="False"
                            Opacity=".52"
                            RecognizesAccessKey="True"
                            SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                            TextBlock.FontSize="15"
                            TextBlock.FontWeight="Medium"
                            TextOptions.TextFormattingMode="Ideal"
                            TextOptions.TextRenderingMode="Auto">
                  <wpf:Ripple.Clip>
                    <MultiBinding Converter="{x:Static converters:BorderClipConverter.Instance}">
                      <Binding ElementName="MouseOverBorder" Path="ActualWidth" />
                      <Binding ElementName="MouseOverBorder" Path="ActualHeight" />
                      <Binding ElementName="MouseOverBorder" Path="CornerRadius" />
                      <Binding ElementName="MouseOverBorder" Path="BorderThickness" />
                    </MultiBinding>
                  </wpf:Ripple.Clip>
                </wpf:Ripple>
              </wpf:ColorZone>
            </Grid>
            <Border x:Name="SelectionHighlightBorder" Visibility="Hidden">
              <Border x:Name="PART_BackgroundSelection"
                      Background="{TemplateBinding Background}"
                      CornerRadius="{Binding Path=(wpf:NavigationRailAssist.SelectionCornerRadius), RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}"
                      IsHitTestVisible="False"
                      Opacity="0.12" />
            </Border>
          </Grid>
          <ControlTemplate.Triggers>
            <Trigger Property="IsEnabled" Value="False">
              <Setter Property="Opacity" Value="0.38" />
            </Trigger>
            <Trigger SourceName="Root" Property="IsMouseOver" Value="True">
              <Setter TargetName="MouseOverBorder" Property="Visibility" Value="Visible" />
            </Trigger>
            <Trigger Property="IsSelected" Value="True">
              <Setter TargetName="contentPresenter" Property="Opacity" Value="1" />
              <Setter TargetName="contentPresenter" Property="wpf:RippleAssist.IsDisabled" Value="True" />
            </Trigger>
 
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsSelected" Value="True" />
                <Condition Property="wpf:ColorZoneAssist.Mode" Value="Standard" />
              </MultiTrigger.Conditions>
              <Setter TargetName="contentPresenter" Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
            </MultiTrigger>
 
            <MultiDataTrigger>
              <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="True" />
                <Condition Binding="{Binding Path=(wpf:NavigationRailAssist.ShowSelectionBackground), RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="True" />
              </MultiDataTrigger.Conditions>
              <Setter TargetName="SelectionHighlightBorder" Property="Visibility" Value="Visible" />
            </MultiDataTrigger>
 
            <Trigger Property="wpf:ColorZoneAssist.Mode" Value="Standard">
              <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.Foreground}" />
              <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.Foreground}" />
            </Trigger>
            <Trigger Property="wpf:ColorZoneAssist.Mode" Value="PrimaryMid">
              <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.Primary.Foreground}" />
              <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.Primary.Foreground}" />
            </Trigger>
            <Trigger Property="wpf:ColorZoneAssist.Mode" Value="PrimaryLight">
              <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.Primary.Light.Foreground}" />
              <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.Primary.Light.Foreground}" />
            </Trigger>
            <Trigger Property="wpf:ColorZoneAssist.Mode" Value="PrimaryDark">
              <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.Primary.Dark.Foreground}" />
              <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.Primary.Dark.Foreground}" />
            </Trigger>
            <Trigger Property="wpf:ColorZoneAssist.Mode" Value="SecondaryLight">
              <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.Secondary.Light.Foreground}" />
              <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.Secondary.Light.Foreground}" />
            </Trigger>
            <Trigger Property="wpf:ColorZoneAssist.Mode" Value="SecondaryMid">
              <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.Secondary.Foreground}" />
              <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.Secondary.Foreground}" />
            </Trigger>
            <Trigger Property="wpf:ColorZoneAssist.Mode" Value="SecondaryDark">
              <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.Secondary.Dark.Foreground}" />
              <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.Secondary.Dark.Foreground}" />
            </Trigger>
            <Trigger Property="wpf:ColorZoneAssist.Mode" Value="Custom">
              <Setter Property="Background" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ColorZoneAssist.Foreground)}" />
              <Setter Property="BorderBrush" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ColorZoneAssist.Foreground)}" />
            </Trigger>
 
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
    <Setter Property="Width" Value="72" />
    <Setter Property="wpf:DialogHost.RestoreFocusElement" Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=TabControl}}" />
    <Setter Property="wpf:RippleAssist.Feedback" Value="{DynamicResource MaterialDesign.Brush.Button.Ripple}" />
  </Style>
 
  <Style x:Key="MaterialDesignNavigationRailTabControl" TargetType="{x:Type TabControl}">
    <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.Background}" />
    <Setter Property="BorderThickness" Value="0,0,1,0" />
    <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.Foreground}" />
    <Setter Property="HorizontalContentAlignment" Value="Left" />
    <Setter Property="ItemContainerStyle" Value="{StaticResource MaterialDesignNavigationRailTabItem}" />
    <Setter Property="Padding" Value="0" />
    <Setter Property="TabStripPlacement" Value="Left" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type TabControl}">
          <DockPanel Background="{TemplateBinding Background}" KeyboardNavigation.TabNavigation="Local">
            <!-- tabs -->
            <Grid x:Name="TabGrid"
                  DockPanel.Dock="Left"
                  SnapsToDevicePixels="True">
              <wpf:Card x:Name="shadowCard"
                        wpf:ElevationAssist.Elevation="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ElevationAssist.Elevation)}"
                        Background="{TemplateBinding Background}"
                        BorderBrush="{DynamicResource MaterialDesign.Brush.TabControl.Divider}"
                        BorderThickness="{TemplateBinding BorderThickness}"
                        UniformCornerRadius="0"
                        Visibility="Visible" />
 
              <wpf:ColorZone x:Name="PART_HeaderCard"
                             VerticalAlignment="Stretch"
                             wpf:ColorZoneAssist.Background="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ColorZoneAssist.Background)}"
                             wpf:ColorZoneAssist.Foreground="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ColorZoneAssist.Foreground)}"
                             Focusable="False"
                             Mode="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ColorZoneAssist.Mode)}">
                <Grid Background="{Binding ElementName=PART_HeaderCard, Path=Background}">
                  <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="1*" />
                  </Grid.RowDefinitions>
                  <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="1*" />
                  </Grid.ColumnDefinitions>
                  <ContentPresenter x:Name="FloatingContentPanel"
                                    Grid.Row="0"
                                    Grid.Column="0"
                                    HorizontalAlignment="Center"
                                    VerticalAlignment="Center"
                                    Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:NavigationRailAssist.FloatingContent)}"
                                    Focusable="False" />
                  <UniformGrid x:Name="HeaderPanel"
                               Grid.Row="1"
                               Grid.Column="0"
                               HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                               VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                               Columns="1"
                               Focusable="False"
                               IsItemsHost="True"
                               Rows="0" />
 
                  <Rectangle x:Name="DividerRect"
                             Grid.RowSpan="2"
                             Width="1"
                             Height="Auto"
                             HorizontalAlignment="Right"
                             Fill="{DynamicResource MaterialDesign.Brush.TabControl.Divider}"
                             Visibility="Collapsed" />
                </Grid>
              </wpf:ColorZone>
 
            </Grid>
            <!-- selected content -->
            <wpf:ColorZone x:Name="PART_HeaderCardSelectedContent"
                           Padding="{TemplateBinding Padding}"
                           HorizontalAlignment="Stretch"
                           VerticalAlignment="Stretch"
                           Background="{x:Null}"
                           Foreground="{DynamicResource MaterialDesign.Brush.Foreground}"
                           Mode="Standard">
 
              <ContentPresenter x:Name="PART_SelectedContentHost"
                                Margin="{TemplateBinding Padding}"
                                ContentSource="SelectedContent"
                                ContentStringFormat="{TemplateBinding ContentStringFormat}"
                                ContentTemplate="{TemplateBinding ContentTemplate}"
                                ContentTemplateSelector="{TemplateBinding ContentTemplateSelector}"
                                Focusable="False"
                                SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
            </wpf:ColorZone>
          </DockPanel>
          <ControlTemplate.Triggers>
            <Trigger Property="wpf:ElevationAssist.Elevation" Value="Dp0">
              <Setter TargetName="DividerRect" Property="Visibility" Value="Visible" />
              <Setter TargetName="shadowCard" Property="Visibility" Value="Collapsed" />
            </Trigger>
            <Trigger Property="wpf:ColorZoneAssist.Mode" Value="Standard">
              <Setter TargetName="PART_HeaderCard" Property="Background" Value="Transparent" />
            </Trigger>
            <Trigger Property="TabStripPlacement" Value="Top">
              <Setter Property="BorderThickness" Value="0,0,0,1" />
              <Setter TargetName="DividerRect" Property="Grid.ColumnSpan" Value="2" />
              <Setter TargetName="DividerRect" Property="Grid.RowSpan" Value="1" />
              <Setter TargetName="DividerRect" Property="Height" Value="1" />
              <Setter TargetName="DividerRect" Property="HorizontalAlignment" Value="Stretch" />
              <Setter TargetName="DividerRect" Property="VerticalAlignment" Value="Bottom" />
              <Setter TargetName="DividerRect" Property="Width" Value="Auto" />
              <Setter TargetName="HeaderPanel" Property="Columns" Value="0" />
              <Setter TargetName="HeaderPanel" Property="Grid.Column" Value="1" />
              <Setter TargetName="HeaderPanel" Property="Grid.Row" Value="0" />
              <Setter TargetName="HeaderPanel" Property="Rows" Value="1" />
              <Setter TargetName="TabGrid" Property="DockPanel.Dock" Value="Top" />
            </Trigger>
            <Trigger Property="TabStripPlacement" Value="Bottom">
              <Setter Property="BorderThickness" Value="0,1,0,0" />
              <Setter TargetName="DividerRect" Property="Grid.ColumnSpan" Value="2" />
              <Setter TargetName="DividerRect" Property="Grid.RowSpan" Value="1" />
              <Setter TargetName="DividerRect" Property="Height" Value="1" />
              <Setter TargetName="DividerRect" Property="HorizontalAlignment" Value="Stretch" />
              <Setter TargetName="DividerRect" Property="VerticalAlignment" Value="Top" />
              <Setter TargetName="DividerRect" Property="Width" Value="Auto" />
              <Setter TargetName="HeaderPanel" Property="Columns" Value="0" />
              <Setter TargetName="HeaderPanel" Property="Grid.Column" Value="1" />
              <Setter TargetName="HeaderPanel" Property="Grid.Row" Value="0" />
              <Setter TargetName="HeaderPanel" Property="Rows" Value="1" />
              <Setter TargetName="TabGrid" Property="DockPanel.Dock" Value="Bottom" />
            </Trigger>
            <Trigger Property="TabStripPlacement" Value="Right">
              <Setter Property="BorderThickness" Value="1,0,0,0" />
              <Setter TargetName="DividerRect" Property="HorizontalAlignment" Value="Left" />
              <Setter TargetName="TabGrid" Property="DockPanel.Dock" Value="Right" />
            </Trigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
    <Setter Property="VerticalContentAlignment" Value="Top" />
    <Setter Property="wpf:ElevationAssist.Elevation" Value="Dp0" />
    <Setter Property="wpf:RippleAssist.Feedback" Value="{DynamicResource MaterialDesign.Brush.Button.Ripple}" />
  </Style>
</ResourceDictionary>