Themes/MaterialDesignTheme.PasswordBox.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:behaviors="http://schemas.microsoft.com/xaml/behaviors"
                    xmlns:converters="clr-namespace:MaterialDesignThemes.Wpf.Converters"
                    xmlns:convertersInternal="clr-namespace:MaterialDesignThemes.Wpf.Converters.Internal"
                    xmlns:internal="clr-namespace:MaterialDesignThemes.Wpf.Internal"
                    xmlns:internalbehaviors="clr-namespace:MaterialDesignThemes.Wpf.Behaviors"
                    xmlns:wpf="clr-namespace:MaterialDesignThemes.Wpf"
                    xmlns:system="clr-namespace:System;assembly=System.Runtime">
  <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ValidationErrorTemplate.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Menu.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Button.xaml" />
  </ResourceDictionary.MergedDictionaries>
 
  <Style x:Key="MaterialDesignPasswordBox" TargetType="{x:Type PasswordBox}">
    <Style.Resources>
      <system:Boolean x:Key="TrueValue">True</system:Boolean>
      <system:Int32 x:Key="One">1</system:Int32>
      <convertersInternal:TextFieldClearButtonVisibilityConverter x:Key="ClearButtonVisibilityConverter" ContentEmptyVisibility="Collapsed" />
      <converters:TextFieldPrefixTextVisibilityConverter x:Key="PrefixSuffixTextVisibilityConverter" HiddenState="Collapsed" />
      <converters:BooleanToDashStyleConverter x:Key="BooleanToDashStyleConverter" TrueValue="{x:Static DashStyles.Solid}" />
      <converters:ThicknessCloneConverter x:Key="HelperTextMarginConverter" CloneEdges="Left,Right" />
      <converters:MathConverter x:Key="DivisionConverter" Operation="Divide" Offset="1.5" />
      <converters:ThicknessCloneConverter x:Key="ThicknessCloneConverter" CloneEdges="All" AdditionalOffsetBottom="-1" />
 
      <Style x:Key="MaterialDesignPasswordCharacterCounterTextBlock"
             TargetType="TextBlock"
             BasedOn="{StaticResource {x:Type TextBlock}}">
        <Setter Property="FontSize" Value="10" />
        <Setter Property="Margin" Value="0,0,16,0" />
        <Setter Property="Opacity" Value="0.56" />
        <Setter Property="Text">
          <Setter.Value>
            <MultiBinding StringFormat="{}{0} / {1}">
              <Binding Path="(wpf:TextFieldAssist.PasswordBoxCharacterCount)" RelativeSource="{RelativeSource FindAncestor, AncestorType=PasswordBox}" />
              <Binding Path="MaxLength" RelativeSource="{RelativeSource FindAncestor, AncestorType=PasswordBox}" />
            </MultiBinding>
          </Setter.Value>
        </Setter>
        <Setter Property="VerticalAlignment" Value="Center" />
        <Setter Property="Visibility" Value="{Binding Path=(wpf:TextFieldAssist.CharacterCounterVisibility), RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type PasswordBox}}}" />
      </Style>
 
      <Style x:Key="MaterialDesignPasswordHelperTextBlock"
             TargetType="TextBlock"
             BasedOn="{StaticResource {x:Type TextBlock}}">
        <Setter Property="FontSize" Value="{Binding Path=(wpf:HintAssist.HelperTextFontSize), RelativeSource={RelativeSource Mode=TemplatedParent}}" />
        <Setter Property="Opacity" Value="{Binding Path=(wpf:HintAssist.HintOpacity), RelativeSource={RelativeSource Mode=TemplatedParent}}" />
        <Setter Property="Text" Value="{Binding Path=(wpf:HintAssist.HelperText), RelativeSource={RelativeSource Mode=TemplatedParent}}" />
      </Style>
    </Style.Resources>
    <Setter Property="AllowDrop" Value="true" />
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.ForegroundLight}" />
    <Setter Property="BorderThickness" Value="0,0,0,1" />
    <Setter Property="CaretBrush" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
    <Setter Property="ContextMenu" Value="{StaticResource MaterialDesignDefaultContextMenu}" />
    <Setter Property="FocusVisualStyle" Value="{x:Null}" />
    <Setter Property="FontFamily" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.FontFamily)}" />
    <Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.Foreground)}" />
    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    <Setter Property="VerticalContentAlignment" Value="Stretch" />
    <Setter Property="KeyboardNavigation.TabNavigation" Value="Local" />
    <Setter Property="Padding" Value="{x:Static wpf:Constants.TextBoxDefaultPadding}" />
    <Setter Property="PasswordChar" Value="●" />
    <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst" />
    <Setter Property="SelectionBrush" Value="{DynamicResource MaterialDesign.Brush.Primary.Light}" />
    <Setter Property="Stylus.IsFlicksEnabled" Value="False" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type PasswordBox}">
          <Grid Cursor="{TemplateBinding Cursor, Converter={x:Static converters:CursorConverter.ArrowInstance}}">
            <VisualStateManager.VisualStateGroups>
              <VisualStateGroup x:Name="FocusStates">
                <VisualState x:Name="Focused">
                  <Storyboard TargetName="RippleOnFocusScaleTransform">
                    <DoubleAnimation Storyboard.TargetProperty="ScaleX"
                                     From="0"
                                     To="1"
                                     Duration="0:0:0.3">
                      <DoubleAnimation.EasingFunction>
                        <SineEase EasingMode="EaseOut" />
                      </DoubleAnimation.EasingFunction>
                    </DoubleAnimation>
                    <DoubleAnimation 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.45"
                                     Storyboard.TargetProperty="ScaleX"
                                     To="0"
                                     Duration="0" />
                    <DoubleAnimation BeginTime="0:0:0.45"
                                     Storyboard.TargetProperty="ScaleY"
                                     To="0"
                                     Duration="0" />
                  </Storyboard>
                </VisualState>
                <VisualState x:Name="Unfocused">
                  <Storyboard TargetName="RippleOnFocusScaleTransform">
                    <DoubleAnimation Storyboard.TargetProperty="ScaleX"
                                     To="0"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetProperty="ScaleY"
                                     To="0"
                                     Duration="0" />
                  </Storyboard>
                </VisualState>
              </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
            <Border HorizontalAlignment="Stretch"
                    VerticalAlignment="Stretch"
                    Background="{DynamicResource MaterialDesign.Brush.PasswordBox.HoverBackground}"
                    CornerRadius="{TemplateBinding wpf:TextFieldAssist.TextFieldCornerRadius}"
                    RenderTransformOrigin="0.5,0.5"
                    Visibility="{TemplateBinding wpf:TextFieldAssist.RippleOnFocusEnabled, Converter={x:Static converters:BooleanToVisibilityConverter.CollapsedInstance}}">
              <Border.RenderTransform>
                <ScaleTransform x:Name="RippleOnFocusScaleTransform" ScaleX="0" ScaleY="0" />
              </Border.RenderTransform>
            </Border>
            <AdornerDecorator>
              <Border x:Name="OuterBorder"
                      Padding="{TemplateBinding Padding}"
                      wpf:BottomDashedLineAdorner.Brush="{TemplateBinding BorderBrush}"
                      wpf:BottomDashedLineAdorner.Thickness="{TemplateBinding BorderThickness}"
                      Background="{TemplateBinding Background}"
                      BorderBrush="{TemplateBinding BorderBrush}"
                      BorderThickness="{TemplateBinding BorderThickness}"
                      CornerRadius="{TemplateBinding wpf:TextFieldAssist.TextFieldCornerRadius}"
                      SnapsToDevicePixels="True">
 
                <Grid x:Name="ContentGrid"
                      MinHeight="16"
                      VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
                  <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                  </Grid.ColumnDefinitions>
 
                  <wpf:PackIcon x:Name="LeadingPackIcon"
                                Grid.Column="0"
                                Width="{TemplateBinding wpf:TextFieldAssist.LeadingIconSize}"
                                Height="{TemplateBinding wpf:TextFieldAssist.LeadingIconSize}"
                                Margin="0,0,6,0"
                                VerticalAlignment="{TemplateBinding wpf:TextFieldAssist.IconVerticalAlignment}"
                                Kind="{TemplateBinding wpf:TextFieldAssist.LeadingIcon}"
                                Opacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
                                Visibility="{TemplateBinding wpf:TextFieldAssist.HasLeadingIcon, Converter={x:Static converters:BooleanToVisibilityConverter.CollapsedInstance}}" />
 
                  <TextBlock x:Name="PrefixTextBlock"
                             Grid.Column="1"
                             Margin="0,0,2,0"
                             VerticalAlignment="Center"
                             FontSize="{TemplateBinding FontSize}"
                             Opacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
                             Text="{TemplateBinding wpf:TextFieldAssist.PrefixText}">
                    <TextBlock.Visibility>
                      <MultiBinding Converter="{StaticResource PrefixSuffixTextVisibilityConverter}">
                        <Binding ElementName="Hint" Path="IsHintInFloatingPosition" />
                        <Binding Path="(wpf:TextFieldAssist.PrefixText)" RelativeSource="{RelativeSource TemplatedParent}" />
                        <Binding Path="(wpf:TextFieldAssist.PrefixTextVisibility)" RelativeSource="{RelativeSource TemplatedParent}" />
                        <Binding Path="IsKeyboardFocusWithin" RelativeSource="{RelativeSource TemplatedParent}" />
                        <Binding Source="{StaticResource TrueValue}" />
                      </MultiBinding>
                    </TextBlock.Visibility>
                  </TextBlock>
 
                  <ScrollViewer x:Name="PART_ContentHost"
                                Grid.Column="2"
                                HorizontalAlignment="Stretch"
                                VerticalAlignment="Center"
                                HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                                VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                                Panel.ZIndex="1"
                                wpf:ScrollViewerAssist.IgnorePadding="True"
                                Cursor="{TemplateBinding Cursor, Converter={x:Static converters:CursorConverter.IBeamInstance}}"
                                Focusable="False"
                                HorizontalScrollBarVisibility="Hidden"
                                SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                UseLayoutRounding="{TemplateBinding UseLayoutRounding}"
                                VerticalScrollBarVisibility="Hidden"
                                wpf:ScrollViewerAssist.BubbleVerticalScroll="True"/>
 
                  <wpf:SmartHint x:Name="Hint"
                                 Grid.Column="1"
                                 Grid.ColumnSpan="3"
                                 VerticalAlignment="Center"
                                 HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                                 VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                                 FloatingOffset="{TemplateBinding wpf:HintAssist.FloatingOffset}"
                                 FloatingScale="{TemplateBinding wpf:HintAssist.FloatingScale}"
                                 FontFamily="{TemplateBinding wpf:HintAssist.FontFamily}"
                                 FontSize="{TemplateBinding FontSize}"
                                 HintOpacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
                                 HintProxy="{Binding RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static converters:HintProxyFabricConverter.Instance}}"
                                 UseFloating="{TemplateBinding wpf:HintAssist.IsFloating}"
                                 FloatingTarget="{Binding ElementName=PART_ContentHost}"
                                 wpf:HintAssist.Background="{TemplateBinding wpf:HintAssist.Background}"
                                 wpf:HintAssist.HintPaddingBrush="{TemplateBinding wpf:HintAssist.HintPaddingBrush}">
                    <wpf:SmartHint.InitialHorizontalOffset>
                      <MultiBinding Converter="{x:Static converters:FloatingHintInitialHorizontalOffsetConverter.Instance}">
                        <Binding ElementName="PrefixTextBlock" Path="ActualWidth" />
                        <Binding ElementName="PrefixTextBlock" Path="Margin" />
                        <Binding ElementName="SuffixTextBlock" Path="ActualWidth" />
                        <Binding ElementName="SuffixTextBlock" Path="Margin" />
                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.PrefixTextVisibility)" />
                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.SuffixTextVisibility)" />
                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.PrefixTextHintBehavior)" />
                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.SuffixTextHintBehavior)" />
                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="HorizontalContentAlignment" />
                        <Binding Source="{StaticResource TrueValue}" />
                      </MultiBinding>
                    </wpf:SmartHint.InitialHorizontalOffset>
                    <wpf:SmartHint.Margin>
                      <MultiBinding Converter="{x:Static converters:FloatingHintMarginConverter.Instance}">
                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:HintAssist.IsFloating)" />
                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="IsKeyboardFocusWithin" />
                        <Binding Source="{StaticResource TrueValue}" />
                        <Binding ElementName="PrefixTextBlock" Path="ActualWidth" />
                        <Binding ElementName="PrefixTextBlock" Path="Margin" />
                        <Binding ElementName="SuffixTextBlock" Path="ActualWidth" />
                        <Binding ElementName="SuffixTextBlock" Path="Margin" />
                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.PrefixTextVisibility)" />
                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.SuffixTextVisibility)" />
                      </MultiBinding>
                    </wpf:SmartHint.Margin>
                    <wpf:SmartHint.Hint>
                      <Border x:Name="HintBackgroundBorder"
                              Background="{TemplateBinding wpf:HintAssist.Background}"
                              CornerRadius="2">
                        <ContentPresenter x:Name="HintWrapper" Content="{TemplateBinding wpf:HintAssist.Hint}" />
                      </Border>
                    </wpf:SmartHint.Hint>
                  </wpf:SmartHint>
 
                  <TextBlock x:Name="SuffixTextBlock"
                             Grid.Column="3"
                             Margin="2,0,0,0"
                             VerticalAlignment="Center"
                             FontSize="{TemplateBinding FontSize}"
                             Opacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
                             Text="{TemplateBinding wpf:TextFieldAssist.SuffixText}">
                    <TextBlock.Visibility>
                      <MultiBinding Converter="{StaticResource PrefixSuffixTextVisibilityConverter}">
                        <Binding ElementName="Hint" Path="IsHintInFloatingPosition" />
                        <Binding Path="(wpf:TextFieldAssist.SuffixText)" RelativeSource="{RelativeSource TemplatedParent}" />
                        <Binding Path="(wpf:TextFieldAssist.SuffixTextVisibility)" RelativeSource="{RelativeSource TemplatedParent}" />
                        <Binding Path="IsKeyboardFocusWithin" RelativeSource="{RelativeSource TemplatedParent}" />
                        <Binding Source="{StaticResource TrueValue}" />
                      </MultiBinding>
                    </TextBlock.Visibility>
                  </TextBlock>
 
                  <wpf:PackIcon x:Name="TrailingPackIcon"
                                Grid.Column="4"
                                Width="{TemplateBinding wpf:TextFieldAssist.TrailingIconSize}"
                                Height="{TemplateBinding wpf:TextFieldAssist.TrailingIconSize}"
                                Margin="4,0,0,0"
                                VerticalAlignment="{TemplateBinding wpf:TextFieldAssist.IconVerticalAlignment}"
                                Kind="{TemplateBinding wpf:TextFieldAssist.TrailingIcon}"
                                Opacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
                                Visibility="{TemplateBinding wpf:TextFieldAssist.HasTrailingIcon, Converter={x:Static converters:BooleanToVisibilityConverter.CollapsedInstance}}" />
 
                  <Button x:Name="PART_ClearButton"
                          Foreground="{TemplateBinding Foreground}"
                          Grid.Column="5"
                          Height="{TemplateBinding wpf:TextFieldAssist.ClearButtonSize}"
                          Width="{TemplateBinding wpf:TextFieldAssist.ClearButtonSize}"
                          Opacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
                          Padding="2,0,0,0"
                          Command="{x:Static internal:ClearText.ClearCommand}"
                          Focusable="False"
                          VerticalAlignment="{TemplateBinding wpf:TextFieldAssist.IconVerticalAlignment}"
                          Style="{StaticResource MaterialDesignToolButton}">
                    <Button.Visibility>
                      <MultiBinding Converter="{StaticResource ClearButtonVisibilityConverter}">
                        <Binding Path="(wpf:TextFieldAssist.HasClearButton)" RelativeSource="{RelativeSource TemplatedParent}" />
                        <Binding ElementName="Hint" Path="IsContentNullOrEmpty" />
                      </MultiBinding>
                    </Button.Visibility>
                    <wpf:PackIcon x:Name="ClearButtonIcon"
                                  Margin="0"
                                  Kind="CloseCircle"
                                  Height="auto"
                                  Width="auto" />
                  </Button>
                </Grid>
              </Border>
            </AdornerDecorator>
 
            <wpf:Underline x:Name="Underline"
                           VerticalAlignment="Bottom"
                           Background="{TemplateBinding wpf:TextFieldAssist.UnderlineBrush}"
                           CornerRadius="{TemplateBinding wpf:TextFieldAssist.UnderlineCornerRadius}"
                           Visibility="{TemplateBinding wpf:TextFieldAssist.DecorationVisibility}" />
 
            <Canvas VerticalAlignment="Bottom"
                    IsHitTestVisible="False">
              <Border Canvas.Top="2"
                      Padding="{TemplateBinding Padding, Converter={StaticResource HelperTextMarginConverter}}"
                      Width="{Binding ActualWidth, ElementName=OuterBorder}">
                <Grid x:Name="FooterGrid">
                  <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition Width="Auto" />
                  </Grid.ColumnDefinitions>
                  <TextBlock x:Name="HelperTextTextBlock" Style="{Binding Path=(wpf:HintAssist.HelperTextStyle), RelativeSource={RelativeSource TemplatedParent}}" />
                  <Border x:Name="CharacterCounterContainer" Grid.Column="1">
                    <TextBlock x:Name="CharacterCounterTextBlock" Style="{Binding Path=(wpf:TextFieldAssist.CharacterCounterStyle), RelativeSource={RelativeSource TemplatedParent}}" />
                  </Border>
                </Grid>
              </Border>
            </Canvas>
          </Grid>
          <ControlTemplate.Triggers>
            <!-- Floating hint -->
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="wpf:HintAssist.IsFloating" Value="True" />
                <Condition SourceName="Hint" Property="IsHintInFloatingPosition" Value="True" />
              </MultiTrigger.Conditions>
              <Setter TargetName="Hint" Property="HintOpacity" Value="1" />
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="wpf:HintAssist.IsFloating" Value="True" />
                <Condition Property="IsKeyboardFocusWithin" Value="True" />
              </MultiTrigger.Conditions>
              <Setter TargetName="Hint" Property="HintOpacity" Value="1" />
              <Setter TargetName="Hint" Property="Foreground" Value="{Binding Path=(wpf:HintAssist.Foreground), RelativeSource={RelativeSource TemplatedParent}}" />
            </MultiTrigger>
 
            <!-- Character counter -->
            <DataTrigger Value="0">
              <DataTrigger.Binding>
                <PriorityBinding>
                  <Binding FallbackValue="0"
                           Path="MaxLength"
                           RelativeSource="{RelativeSource Self}" />
                  <Binding Source="0" />
                </PriorityBinding>
              </DataTrigger.Binding>
              <Setter TargetName="CharacterCounterContainer" Property="Visibility" Value="Collapsed" />
            </DataTrigger>
 
            <!-- Outlined text field -->
            <Trigger Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True">
              <Setter TargetName="Underline" Property="Visibility" Value="Collapsed" />
              <Setter TargetName="Hint" Property="FloatingTarget" Value="{Binding ElementName=OuterBorder}" />
              <Setter TargetName="Hint" Property="FloatingAlignment" Value="Center" />
              <Setter TargetName="Hint" Property="FloatingMargin" Value="4,0" />
              <Setter TargetName="Hint" Property="InitialVerticalOffset" Value="{Binding ElementName=Hint, Path=ActualHeight, Converter={StaticResource DivisionConverter}, ConverterParameter=2}" />
            </Trigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" />
                <Condition Property="wpf:HintAssist.IsFloating" Value="True" />
                <Condition SourceName="Hint" Property="IsHintInFloatingPosition" Value="True" />
              </MultiTrigger.Conditions>
              <Setter TargetName="Hint" Property="wpf:HintAssist.ApplyHintPaddingBrush" Value="True" />
            </MultiTrigger>
 
            <!-- IsEnabled -->
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsEnabled" Value="False" />
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="False" />
              </MultiTrigger.Conditions>
              <Setter TargetName="OuterBorder" Property="BorderBrush" Value="Transparent" />
              <Setter TargetName="OuterBorder" Property="wpf:BottomDashedLineAdorner.IsAttached" Value="True" />
              <Setter TargetName="OuterBorder" Property="wpf:BottomDashedLineAdorner.DashStyle" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:TextFieldAssist.HasFilledTextField), Converter={StaticResource BooleanToDashStyleConverter}}" />
              <Setter TargetName="ContentGrid" Property="Opacity" Value="{x:Static wpf:Constants.TextBoxNotEnabledOpacity}" />
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsEnabled" Value="False" />
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" />
              </MultiTrigger.Conditions>
              <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.PasswordBox.OutlineInactiveBorder}" />
              <Setter TargetName="PART_ContentHost" Property="Opacity" Value="{x:Static wpf:Constants.TextBoxNotEnabledOpacity}" />
              <Setter TargetName="HintWrapper" Property="Opacity" Value="{x:Static wpf:Constants.TextBoxNotEnabledOpacity}" />
              <Setter TargetName="PART_ClearButton" Property="Opacity" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:HintAssist.HintOpacity), Converter={x:Static converters:MathConverter.MultiplyInstance}, ConverterParameter={x:Static wpf:Constants.TextBoxNotEnabledOpacity}}" />
              <Setter TargetName="LeadingPackIcon" Property="Opacity" Value="{Binding ElementName=PART_ClearButton, Path=Opacity}" />
              <Setter TargetName="PrefixTextBlock" Property="Opacity" Value="{Binding ElementName=PART_ClearButton, Path=Opacity}" />
              <Setter TargetName="SuffixTextBlock" Property="Opacity" Value="{Binding ElementName=PART_ClearButton, Path=Opacity}" />
              <Setter TargetName="TrailingPackIcon" Property="Opacity" Value="{Binding ElementName=PART_ClearButton, Path=Opacity}" />
            </MultiTrigger>
 
            <!-- IsKeyboardFocused -->
            <Trigger Property="IsKeyboardFocusWithin" Value="True">
              <Setter TargetName="HintWrapper" Property="Opacity" Value="1" />
              <Setter Property="BorderBrush" Value="{Binding Path=(wpf:TextFieldAssist.UnderlineBrush), RelativeSource={RelativeSource Self}}" />
              <Setter TargetName="Underline" Property="IsActive" Value="True" />
            </Trigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsKeyboardFocusWithin" Value="True" />
                <Condition Property="Validation.HasError" Value="False" />
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" />
              </MultiTrigger.Conditions>
              <Setter Property="BorderBrush" Value="{Binding Path=(wpf:TextFieldAssist.UnderlineBrush), RelativeSource={RelativeSource Self}}" />
              <Setter TargetName="OuterBorder" Property="BorderThickness" Value="{Binding Path=(wpf:TextFieldAssist.OutlinedBorderActiveThickness), RelativeSource={RelativeSource TemplatedParent}}" />
              <Setter TargetName="ContentGrid" Property="Margin">
                <Setter.Value>
                  <MultiBinding Converter="{x:Static converters:OutlinedStyleActiveBorderMarginCompensationConverter.Instance}">
                    <Binding Path="BorderThickness" RelativeSource="{RelativeSource TemplatedParent}" />
                    <Binding Path="(wpf:TextFieldAssist.OutlinedBorderActiveThickness)" RelativeSource="{RelativeSource TemplatedParent}" />
                  </MultiBinding>
                </Setter.Value>
              </Setter>
            </MultiTrigger>
 
            <!-- IsMouseOver -->
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsMouseOver" Value="True" />
                <Condition Property="wpf:TextFieldAssist.HasFilledTextField" Value="False" />
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="False" />
                <Condition Property="wpf:TextFieldAssist.NewSpecHighlightingEnabled" Value="False" />
              </MultiTrigger.Conditions>
              <Setter Property="BorderBrush" Value="{Binding Path=(wpf:TextFieldAssist.UnderlineBrush), RelativeSource={RelativeSource Self}}" />
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsMouseOver" Value="True" />
                <Condition Property="wpf:TextFieldAssist.HasFilledTextField" Value="False" />
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="False" />
                <Condition Property="wpf:TextFieldAssist.NewSpecHighlightingEnabled" Value="True" />
              </MultiTrigger.Conditions>
              <Setter TargetName="OuterBorder" Property="BorderThickness" Value="0,0,0,2" />
              <Setter TargetName="OuterBorder" Property="Padding" Value="{Binding Path=Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessCloneConverter}}" />
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsMouseOver" Value="True" />
                <Condition Property="wpf:TextFieldAssist.HasFilledTextField" Value="True" />
              </MultiTrigger.Conditions>
              <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.PasswordBox.HoverBackground}" />
              <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.PasswordBox.HoverBorder}" />
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsMouseOver" Value="True" />
                <Condition Property="Validation.HasError" Value="False" />
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" />
              </MultiTrigger.Conditions>
              <Setter TargetName="OuterBorder" Property="BorderThickness" Value="{Binding Path=(wpf:TextFieldAssist.OutlinedBorderActiveThickness), RelativeSource={RelativeSource TemplatedParent}}" />
              <Setter TargetName="ContentGrid" Property="Margin">
                <Setter.Value>
                  <MultiBinding Converter="{x:Static converters:OutlinedStyleActiveBorderMarginCompensationConverter.Instance}">
                    <Binding Path="BorderThickness" RelativeSource="{RelativeSource TemplatedParent}" />
                    <Binding Path="(wpf:TextFieldAssist.OutlinedBorderActiveThickness)" RelativeSource="{RelativeSource TemplatedParent}" />
                  </MultiBinding>
                </Setter.Value>
              </Setter>
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsMouseOver" Value="True" />
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" />
                <Condition Property="wpf:HintAssist.IsFloating" Value="True" />
                <Condition SourceName="Hint" Property="IsHintInFloatingPosition" Value="True" />
              </MultiTrigger.Conditions>
              <Setter TargetName="HintWrapper" Property="Opacity" Value="1" />
            </MultiTrigger>
 
            <!-- VerticalContentAlignment.Stretch -->
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="VerticalContentAlignment" Value="Stretch" />
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="False" />
              </MultiTrigger.Conditions>
              <Setter TargetName="Hint" Property="InitialVerticalOffset">
                <Setter.Value>
                  <MultiBinding Converter="{x:Static converters:FloatingHintInitialVerticalOffsetConverter.Instance}">
                    <Binding ElementName="PART_ContentHost" Path="ActualHeight" />
                    <Binding ElementName="Hint" Path="ActualHeight" />
                    <Binding Source="{StaticResource One}" />
                  </MultiBinding>
                </Setter.Value>
              </Setter>
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="VerticalContentAlignment" Value="Stretch" />
                <Condition SourceName="PART_ContentHost" Property="ScrollViewer.ComputedHorizontalScrollBarVisibility" Value="Visible"/>
              </MultiTrigger.Conditions>
              <Setter Property="wpf:TextFieldAssist.TextBoxViewMargin" Value="{x:Static wpf:Constants.DefaultTextBoxViewMarginStretch}" />
            </MultiTrigger>
 
            <!-- Validation.HasError -->
            <Trigger Property="Validation.HasError" Value="true">
              <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.ValidationError}" />
              <Setter TargetName="Underline" Property="Background" Value="{DynamicResource MaterialDesign.Brush.ValidationError}" />
              <Setter TargetName="Hint" Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.ValidationError}" />
            </Trigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="Validation.HasError" Value="True" />
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" />
              </MultiTrigger.Conditions>
              <Setter TargetName="FooterGrid" Property="Margin" Value="0,0,1,0" />
              <Setter TargetName="OuterBorder" Property="BorderThickness" Value="{Binding Path=(wpf:TextFieldAssist.OutlinedBorderActiveThickness), RelativeSource={RelativeSource TemplatedParent}}" />
              <Setter TargetName="ContentGrid" Property="Margin">
                <Setter.Value>
                  <MultiBinding Converter="{x:Static converters:OutlinedStyleActiveBorderMarginCompensationConverter.Instance}">
                    <Binding Path="BorderThickness" RelativeSource="{RelativeSource TemplatedParent}" />
                    <Binding Path="(wpf:TextFieldAssist.OutlinedBorderActiveThickness)" RelativeSource="{RelativeSource TemplatedParent}" />
                  </MultiBinding>
                </Setter.Value>
              </Setter>
            </MultiTrigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
    <Setter Property="Validation.ErrorTemplate" Value="{StaticResource MaterialDesignValidationErrorTemplate}" />
    <Setter Property="internal:ClearText.HandlesClearCommand" Value="True" />
    <Setter Property="wpf:BehaviorsAssist.Behaviors">
      <Setter.Value>
        <wpf:BehaviorCollection>
          <internalbehaviors:PasswordBoxBehavior />
        </wpf:BehaviorCollection>
      </Setter.Value>
    </Setter>
    <Setter Property="wpf:HintAssist.Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
    <Setter Property="wpf:HintAssist.HelperTextStyle" Value="{StaticResource MaterialDesignPasswordHelperTextBlock}" />
    <Setter Property="wpf:TextFieldAssist.CharacterCounterStyle" Value="{StaticResource MaterialDesignPasswordCharacterCounterTextBlock}" />
    <Setter Property="wpf:TextFieldAssist.CharacterCounterVisibility" Value="Visible" />
    <Setter Property="wpf:TextFieldAssist.TextBoxViewMargin" Value="{x:Static wpf:Constants.DefaultTextBoxViewMargin}" />
    <Setter Property="wpf:TextFieldAssist.TextBoxViewVerticalAlignment" Value="Stretch" />
    <Setter Property="wpf:TextFieldAssist.UnderlineBrush" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
  </Style>
 
  <Style x:Key="MaterialDesignFloatingHintPasswordBox"
         TargetType="{x:Type PasswordBox}"
         BasedOn="{StaticResource MaterialDesignPasswordBox}">
    <Setter Property="wpf:HintAssist.IsFloating" Value="True" />
    <Setter Property="Padding" Value="{x:Static wpf:Constants.FloatingTextBoxDefaultPadding}" />
  </Style>
 
  <Style x:Key="MaterialDesignFilledPasswordBox"
         TargetType="{x:Type PasswordBox}"
         BasedOn="{StaticResource MaterialDesignFloatingHintPasswordBox}">
    <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.PasswordBox.FilledBackground}" />
    <Setter Property="Padding" Value="{x:Static wpf:Constants.FilledTextBoxDefaultPadding}" />
    <Setter Property="wpf:TextFieldAssist.HasFilledTextField" Value="True" />
    <Setter Property="wpf:TextFieldAssist.TextFieldCornerRadius" Value="4,4,0,0" />
    <Setter Property="wpf:TextFieldAssist.UnderlineCornerRadius" Value="0" />
  </Style>
 
  <Style x:Key="MaterialDesignOutlinedPasswordBox"
         TargetType="{x:Type PasswordBox}"
         BasedOn="{StaticResource MaterialDesignFloatingHintPasswordBox}">
    <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.PasswordBox.OutlineBorder}" />
    <Setter Property="BorderThickness" Value="{x:Static wpf:Constants.DefaultOutlinedBorderInactiveThickness}" />
    <Setter Property="Padding" Value="{x:Static wpf:Constants.OutlinedTextBoxDefaultPadding}" />
    <Setter Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" />
    <Setter Property="wpf:TextFieldAssist.TextFieldCornerRadius" Value="4" />
  </Style>
 
  <!-- ******************** "Reveal" PasswordBox styles below ***************************** -->
 
  <Style x:Key="MaterialDesignRevealPasswordBox" TargetType="{x:Type PasswordBox}">
    <Style.Resources>
      <system:Boolean x:Key="TrueValue">True</system:Boolean>
      <system:Int32 x:Key="One">1</system:Int32>
      <convertersInternal:TextFieldClearButtonVisibilityConverter x:Key="ClearButtonVisibilityConverter" ContentEmptyVisibility="Collapsed" />
      <converters:TextFieldPrefixTextVisibilityConverter x:Key="PrefixSuffixTextVisibilityConverter" HiddenState="Collapsed" />
      <converters:BooleanToDashStyleConverter x:Key="BooleanToDashStyleConverter" TrueValue="{x:Static DashStyles.Solid}" />
      <converters:ThicknessCloneConverter x:Key="HelperTextMarginConverter" CloneEdges="Left,Right" />
      <converters:MathConverter x:Key="DivisionConverter" Operation="Divide" Offset="1.5" />
      <converters:ThicknessCloneConverter x:Key="ThicknessCloneConverter" CloneEdges="All" AdditionalOffsetBottom="-1" />
 
      <Style x:Key="MaterialDesignPasswordCharacterCounterTextBlock"
             TargetType="TextBlock"
             BasedOn="{StaticResource {x:Type TextBlock}}">
        <Setter Property="FontSize" Value="10" />
        <Setter Property="Margin" Value="0,0,16,0" />
        <Setter Property="Opacity" Value="0.56" />
        <Setter Property="Text">
          <Setter.Value>
            <MultiBinding StringFormat="{}{0} / {1}">
              <Binding Path="(wpf:TextFieldAssist.PasswordBoxCharacterCount)" RelativeSource="{RelativeSource FindAncestor, AncestorType=PasswordBox}" />
              <Binding Path="MaxLength" RelativeSource="{RelativeSource FindAncestor, AncestorType=PasswordBox}" />
            </MultiBinding>
          </Setter.Value>
        </Setter>
        <Setter Property="VerticalAlignment" Value="Center" />
        <Setter Property="Visibility" Value="{Binding Path=(wpf:TextFieldAssist.CharacterCounterVisibility), RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type PasswordBox}}}" />
      </Style>
 
      <Style x:Key="MaterialDesignPasswordHelperTextBlock"
             TargetType="TextBlock"
             BasedOn="{StaticResource {x:Type TextBlock}}">
        <Setter Property="FontSize" Value="{Binding Path=(wpf:HintAssist.HelperTextFontSize), RelativeSource={RelativeSource Mode=TemplatedParent}}" />
        <Setter Property="Opacity" Value="{Binding Path=(wpf:HintAssist.HintOpacity), RelativeSource={RelativeSource Mode=TemplatedParent}}" />
        <Setter Property="Text" Value="{Binding Path=(wpf:HintAssist.HelperText), RelativeSource={RelativeSource Mode=TemplatedParent}}" />
      </Style>
    </Style.Resources>
    <Setter Property="AllowDrop" Value="true" />
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.ForegroundLight}" />
    <Setter Property="BorderThickness" Value="0,0,0,1" />
    <Setter Property="CaretBrush" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
    <Setter Property="ContextMenu" Value="{StaticResource MaterialDesignDefaultContextMenu}" />
    <Setter Property="FocusVisualStyle" Value="{x:Null}" />
    <Setter Property="FontFamily" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.FontFamily)}" />
    <Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.Foreground)}" />
    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    <Setter Property="VerticalContentAlignment" Value="Stretch" />
    <Setter Property="KeyboardNavigation.TabNavigation" Value="Local" />
    <Setter Property="Padding" Value="{x:Static wpf:Constants.TextBoxDefaultPadding}" />
    <Setter Property="PasswordChar" Value="●" />
    <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst" />
    <Setter Property="SelectionBrush" Value="{DynamicResource MaterialDesign.Brush.Primary.Light}" />
    <Setter Property="Stylus.IsFlicksEnabled" Value="False" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type PasswordBox}">
          <ControlTemplate.Resources>
            <Style x:Key="MaterialDesignRawTextBox" TargetType="TextBox">
              <Setter Property="Template">
                <Setter.Value>
                  <ControlTemplate TargetType="TextBox">
                    <Grid>
                      <ScrollViewer x:Name="PART_ContentHost"
                                    Margin="-2,0"
                                    wpf:ScrollViewerAssist.IgnorePadding="True"
                                    HorizontalScrollBarVisibility="Hidden"
                                    SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                    UseLayoutRounding="{TemplateBinding UseLayoutRounding}"
                                    VerticalScrollBarVisibility="Hidden" />
                    </Grid>
                  </ControlTemplate>
                </Setter.Value>
              </Setter>
            </Style>
            <Style x:Key="MaterialDesignRawToggleButton" TargetType="ToggleButton">
              <Setter Property="Cursor" Value="Hand" />
              <Setter Property="Template">
                <Setter.Value>
                  <ControlTemplate TargetType="ToggleButton">
                    <Grid Background="Transparent">
                      <ContentPresenter Margin="{TemplateBinding Padding}"
                                        Content="{TemplateBinding Content}"
                                        RecognizesAccessKey="True"
                                        SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                    </Grid>
                  </ControlTemplate>
                </Setter.Value>
              </Setter>
 
            </Style>
          </ControlTemplate.Resources>
          <Grid Cursor="{TemplateBinding Cursor, Converter={x:Static converters:CursorConverter.ArrowInstance}}">
            <VisualStateManager.VisualStateGroups>
              <VisualStateGroup x:Name="FocusStates">
                <VisualState x:Name="Focused">
                  <Storyboard TargetName="RippleOnFocusScaleTransform">
                    <DoubleAnimation Storyboard.TargetProperty="ScaleX"
                                     From="0"
                                     To="1"
                                     Duration="0:0:0.3">
                      <DoubleAnimation.EasingFunction>
                        <SineEase EasingMode="EaseOut" />
                      </DoubleAnimation.EasingFunction>
                    </DoubleAnimation>
                    <DoubleAnimation 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.45"
                                     Storyboard.TargetProperty="ScaleX"
                                     To="0"
                                     Duration="0" />
                    <DoubleAnimation BeginTime="0:0:0.45"
                                     Storyboard.TargetProperty="ScaleY"
                                     To="0"
                                     Duration="0" />
                  </Storyboard>
                </VisualState>
                <VisualState x:Name="Unfocused">
                  <Storyboard TargetName="RippleOnFocusScaleTransform">
                    <DoubleAnimation Storyboard.TargetProperty="ScaleX"
                                     To="0"
                                     Duration="0" />
                    <DoubleAnimation Storyboard.TargetProperty="ScaleY"
                                     To="0"
                                     Duration="0" />
                  </Storyboard>
                </VisualState>
              </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
            <Border HorizontalAlignment="Stretch"
                    VerticalAlignment="Stretch"
                    Background="{DynamicResource MaterialDesign.Brush.PasswordBox.HoverBackground}"
                    CornerRadius="{TemplateBinding wpf:TextFieldAssist.TextFieldCornerRadius}"
                    RenderTransformOrigin="0.5,0.5"
                    Visibility="{TemplateBinding wpf:TextFieldAssist.RippleOnFocusEnabled, Converter={x:Static converters:BooleanToVisibilityConverter.CollapsedInstance}}">
              <Border.RenderTransform>
                <ScaleTransform x:Name="RippleOnFocusScaleTransform" ScaleX="0" ScaleY="0" />
              </Border.RenderTransform>
            </Border>
            <AdornerDecorator>
              <Border x:Name="OuterBorder"
                      Padding="{TemplateBinding Padding}"
                      wpf:BottomDashedLineAdorner.Brush="{TemplateBinding BorderBrush}"
                      wpf:BottomDashedLineAdorner.Thickness="{TemplateBinding BorderThickness}"
                      Background="{TemplateBinding Background}"
                      BorderBrush="{TemplateBinding BorderBrush}"
                      BorderThickness="{TemplateBinding BorderThickness}"
                      CornerRadius="{TemplateBinding wpf:TextFieldAssist.TextFieldCornerRadius}"
                      SnapsToDevicePixels="True">
 
                <Grid x:Name="ContentGrid"
                      MinHeight="16"
                      VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
                  <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                  </Grid.ColumnDefinitions>
 
                  <wpf:PackIcon x:Name="LeadingPackIcon"
                                Grid.Column="0"
                                Width="{TemplateBinding wpf:TextFieldAssist.LeadingIconSize}"
                                Height="{TemplateBinding wpf:TextFieldAssist.LeadingIconSize}"
                                Margin="0,0,6,0"
                                VerticalAlignment="{TemplateBinding wpf:TextFieldAssist.IconVerticalAlignment}"
                                Kind="{TemplateBinding wpf:TextFieldAssist.LeadingIcon}"
                                Opacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
                                Visibility="{TemplateBinding wpf:TextFieldAssist.HasLeadingIcon, Converter={x:Static converters:BooleanToVisibilityConverter.CollapsedInstance}}" />
 
                  <TextBlock x:Name="PrefixTextBlock"
                             Grid.Column="1"
                             Margin="0,0,2,0"
                             VerticalAlignment="Center"
                             FontSize="{TemplateBinding FontSize}"
                             Opacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
                             Text="{TemplateBinding wpf:TextFieldAssist.PrefixText}">
                    <TextBlock.Visibility>
                      <MultiBinding Converter="{StaticResource PrefixSuffixTextVisibilityConverter}">
                        <Binding ElementName="Hint" Path="IsHintInFloatingPosition" />
                        <Binding Path="(wpf:TextFieldAssist.PrefixText)" RelativeSource="{RelativeSource TemplatedParent}" />
                        <Binding Path="(wpf:TextFieldAssist.PrefixTextVisibility)" RelativeSource="{RelativeSource TemplatedParent}" />
                        <Binding Path="IsKeyboardFocusWithin" RelativeSource="{RelativeSource TemplatedParent}" />
                        <Binding Source="{StaticResource TrueValue}" />
                      </MultiBinding>
                    </TextBlock.Visibility>
                  </TextBlock>
 
                  <Grid x:Name="PasswordContentGrid"
                        Grid.Column="2"
                        HorizontalAlignment="Stretch"
                        Panel.ZIndex="1"
                        wpf:PasswordBoxAssist.IsPasswordRevealed="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:PasswordBoxAssist.IsPasswordRevealed)}">
 
                    <ScrollViewer x:Name="PART_ContentHost"
                                  HorizontalAlignment="Stretch"
                                  VerticalAlignment="Center"
                                  HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                                  VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                                  Panel.ZIndex="1"
                                  wpf:ScrollViewerAssist.IgnorePadding="True"
                                  Cursor="{TemplateBinding Cursor, Converter={x:Static converters:CursorConverter.IBeamInstance}}"
                                  Focusable="False"
                                  HorizontalScrollBarVisibility="Hidden"
                                  SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                  UseLayoutRounding="{TemplateBinding UseLayoutRounding}"
                                  VerticalScrollBarVisibility="Hidden"
                                  Visibility="{Binding ElementName=PasswordContentGrid, Path=(wpf:PasswordBoxAssist.IsPasswordRevealed), Converter={x:Static converters:BooleanToVisibilityConverter.NotCollapsedInstance}}"
                                  wpf:ScrollViewerAssist.BubbleVerticalScroll="True"/>
 
                    <TextBox x:Name="RevealPasswordTextBox"
                             Padding="{Binding ElementName=PART_ContentHost, Path=Padding}"
                             HorizontalAlignment="Stretch"
                             VerticalAlignment="Center"
                             HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                             VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                             CaretBrush="{TemplateBinding CaretBrush}"
                             Cursor="{TemplateBinding Cursor, Converter={x:Static converters:CursorConverter.IBeamInstance}}"
                             Foreground="{TemplateBinding Foreground}"
                             MaxLength="{TemplateBinding MaxLength}"
                             SelectionBrush="{TemplateBinding SelectionBrush}"
                             SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                             Style="{StaticResource MaterialDesignRawTextBox}"
                             Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:PasswordBoxAssist.Password), UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
                             UseLayoutRounding="{TemplateBinding UseLayoutRounding}"
                             Visibility="{Binding ElementName=PasswordContentGrid, Path=(wpf:PasswordBoxAssist.IsPasswordRevealed), Converter={x:Static converters:BooleanToVisibilityConverter.CollapsedInstance}}">
                      <behaviors:Interaction.Behaviors>
                        <internalbehaviors:PasswordBoxRevealTextBoxBehavior PasswordBox="{Binding RelativeSource={RelativeSource TemplatedParent}}" />
                      </behaviors:Interaction.Behaviors>
                    </TextBox>
                  </Grid>
 
                  <wpf:SmartHint x:Name="Hint"
                                 Grid.Column="1"
                                 Grid.ColumnSpan="3"
                                 VerticalAlignment="Center"
                                 HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                                 VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                                 FloatingOffset="{TemplateBinding wpf:HintAssist.FloatingOffset}"
                                 FloatingScale="{TemplateBinding wpf:HintAssist.FloatingScale}"
                                 FontFamily="{TemplateBinding wpf:HintAssist.FontFamily}"
                                 FontSize="{TemplateBinding FontSize}"
                                 HintOpacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
                                 HintProxy="{Binding RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static converters:HintProxyFabricConverter.Instance}}"
                                 UseFloating="{TemplateBinding wpf:HintAssist.IsFloating}"
                                 FloatingTarget="{Binding ElementName=PART_ContentHost}"
                                 wpf:HintAssist.Background="{TemplateBinding wpf:HintAssist.Background}"
                                 wpf:HintAssist.HintPaddingBrush="{TemplateBinding wpf:HintAssist.HintPaddingBrush}">
                    <wpf:SmartHint.InitialHorizontalOffset>
                      <MultiBinding Converter="{x:Static converters:FloatingHintInitialHorizontalOffsetConverter.Instance}">
                        <Binding ElementName="PrefixTextBlock" Path="ActualWidth" />
                        <Binding ElementName="PrefixTextBlock" Path="Margin" />
                        <Binding ElementName="SuffixTextBlock" Path="ActualWidth" />
                        <Binding ElementName="SuffixTextBlock" Path="Margin" />
                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.PrefixTextVisibility)" />
                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.SuffixTextVisibility)" />
                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.PrefixTextHintBehavior)" />
                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.SuffixTextHintBehavior)" />
                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="HorizontalContentAlignment" />
                        <Binding Source="{StaticResource TrueValue}" />
                      </MultiBinding>
                    </wpf:SmartHint.InitialHorizontalOffset>
                    <wpf:SmartHint.Margin>
                      <MultiBinding Converter="{x:Static converters:FloatingHintMarginConverter.Instance}">
                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:HintAssist.IsFloating)" />
                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="IsKeyboardFocusWithin" />
                        <Binding Source="{StaticResource TrueValue}" />
                        <Binding ElementName="PrefixTextBlock" Path="ActualWidth" />
                        <Binding ElementName="PrefixTextBlock" Path="Margin" />
                        <Binding ElementName="SuffixTextBlock" Path="ActualWidth" />
                        <Binding ElementName="SuffixTextBlock" Path="Margin" />
                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.PrefixTextVisibility)" />
                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.SuffixTextVisibility)" />
                      </MultiBinding>
                    </wpf:SmartHint.Margin>
                    <wpf:SmartHint.Hint>
                      <Border x:Name="HintBackgroundBorder"
                              Background="{TemplateBinding wpf:HintAssist.Background}"
                              CornerRadius="2">
                        <ContentPresenter x:Name="HintWrapper" Content="{TemplateBinding wpf:HintAssist.Hint}" />
                      </Border>
                    </wpf:SmartHint.Hint>
                  </wpf:SmartHint>
 
                  <TextBlock x:Name="SuffixTextBlock"
                             Grid.Column="3"
                             Margin="2,0,0,0"
                             VerticalAlignment="Center"
                             FontSize="{TemplateBinding FontSize}"
                             Opacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
                             Text="{TemplateBinding wpf:TextFieldAssist.SuffixText}">
                    <TextBlock.Visibility>
                      <MultiBinding Converter="{StaticResource PrefixSuffixTextVisibilityConverter}">
                        <Binding ElementName="Hint" Path="IsHintInFloatingPosition" />
                        <Binding Path="(wpf:TextFieldAssist.SuffixText)" RelativeSource="{RelativeSource TemplatedParent}" />
                        <Binding Path="(wpf:TextFieldAssist.SuffixTextVisibility)" RelativeSource="{RelativeSource TemplatedParent}" />
                        <Binding Path="IsKeyboardFocusWithin" RelativeSource="{RelativeSource TemplatedParent}" />
                        <Binding Source="{StaticResource TrueValue}" />
                      </MultiBinding>
                    </TextBlock.Visibility>
                  </TextBlock>
 
                  <ToggleButton x:Name="RevealPasswordButton"
                                Grid.Column="4"
                                Height="Auto"
                                IsTabStop="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:PasswordBoxAssist.IsRevealButtonTabStop)}"
                                Opacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
                                Padding="2,0,0,0"
                                VerticalAlignment="Center"
                                IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:PasswordBoxAssist.IsPasswordRevealed), Mode=TwoWay}"
                                Style="{StaticResource MaterialDesignRawToggleButton}">
                    <wpf:PackIcon x:Name="RevealPasswordIcon"
                                  VerticalAlignment="Center"
                                  Foreground="{Binding ElementName=PART_ClearButton, Path=Foreground}" />
                  </ToggleButton>
 
                  <wpf:PackIcon x:Name="TrailingPackIcon"
                                Grid.Column="5"
                                Width="{TemplateBinding wpf:TextFieldAssist.TrailingIconSize}"
                                Height="{TemplateBinding wpf:TextFieldAssist.TrailingIconSize}"
                                Margin="4,0,0,0"
                                VerticalAlignment="{TemplateBinding wpf:TextFieldAssist.IconVerticalAlignment}"
                                Kind="{TemplateBinding wpf:TextFieldAssist.TrailingIcon}"
                                Opacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
                                Visibility="{TemplateBinding wpf:TextFieldAssist.HasTrailingIcon, Converter={x:Static converters:BooleanToVisibilityConverter.CollapsedInstance}}" />
 
                  <Button x:Name="PART_ClearButton"
                          Grid.Column="6"
                          Height="{TemplateBinding wpf:TextFieldAssist.ClearButtonSize}"
                          Width="{TemplateBinding wpf:TextFieldAssist.ClearButtonSize}"
                          Opacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
                          Padding="2,0,0,0"
                          Command="{x:Static internal:ClearText.ClearCommand}"
                          Focusable="False"
                          Foreground="{TemplateBinding Foreground}"
                          VerticalAlignment="{TemplateBinding wpf:TextFieldAssist.IconVerticalAlignment}"
                          Style="{StaticResource MaterialDesignToolButton}">
                    <Button.Visibility>
                      <MultiBinding Converter="{StaticResource ClearButtonVisibilityConverter}">
                        <Binding Path="(wpf:TextFieldAssist.HasClearButton)" RelativeSource="{RelativeSource TemplatedParent}" />
                        <Binding ElementName="Hint" Path="IsContentNullOrEmpty" />
                      </MultiBinding>
                    </Button.Visibility>
                    <wpf:PackIcon x:Name="ClearButtonIcon"
                                  Margin="0"
                                  Kind="CloseCircle"
                                  Height="auto"
                                  Width="auto" />
                  </Button>
 
                </Grid>
              </Border>
            </AdornerDecorator>
            <wpf:Underline x:Name="Underline"
                           VerticalAlignment="Bottom"
                           Background="{TemplateBinding wpf:TextFieldAssist.UnderlineBrush}"
                           CornerRadius="{TemplateBinding wpf:TextFieldAssist.UnderlineCornerRadius}"
                           Visibility="{TemplateBinding wpf:TextFieldAssist.DecorationVisibility}" />
 
            <Canvas VerticalAlignment="Bottom"
                    IsHitTestVisible="False">
              <Border Canvas.Top="2"
                      Padding="{TemplateBinding Padding, Converter={StaticResource HelperTextMarginConverter}}"
                      Width="{Binding ActualWidth, ElementName=OuterBorder}">
                <Grid x:Name="FooterGrid">
                  <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition Width="Auto" />
                  </Grid.ColumnDefinitions>
                  <TextBlock x:Name="HelperTextTextBlock" Style="{Binding Path=(wpf:HintAssist.HelperTextStyle), RelativeSource={RelativeSource TemplatedParent}}" />
                  <Border x:Name="CharacterCounterContainer" Grid.Column="1">
                    <TextBlock x:Name="CharacterCounterTextBlock" Style="{Binding Path=(wpf:TextFieldAssist.CharacterCounterStyle), RelativeSource={RelativeSource TemplatedParent}}" />
                  </Border>
                </Grid>
              </Border>
            </Canvas>
          </Grid>
          <ControlTemplate.Triggers>
            <!-- Floating hint -->
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="wpf:HintAssist.IsFloating" Value="True" />
                <Condition SourceName="Hint" Property="IsHintInFloatingPosition" Value="True" />
              </MultiTrigger.Conditions>
              <Setter TargetName="Hint" Property="HintOpacity" Value="1" />
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="wpf:HintAssist.IsFloating" Value="True" />
                <Condition Property="IsKeyboardFocusWithin" Value="True" />
              </MultiTrigger.Conditions>
              <Setter TargetName="Hint" Property="HintOpacity" Value="1" />
              <Setter TargetName="Hint" Property="Foreground" Value="{Binding Path=(wpf:HintAssist.Foreground), RelativeSource={RelativeSource TemplatedParent}}" />
            </MultiTrigger>
 
            <!-- Character counter -->
            <DataTrigger Value="0">
              <DataTrigger.Binding>
                <PriorityBinding>
                  <Binding FallbackValue="0"
                         Path="MaxLength"
                         RelativeSource="{RelativeSource Self}" />
                  <Binding Source="0" />
                </PriorityBinding>
              </DataTrigger.Binding>
              <Setter TargetName="CharacterCounterContainer" Property="Visibility" Value="Collapsed" />
            </DataTrigger>
 
            <!-- Outlined text field -->
            <Trigger Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True">
              <Setter TargetName="Underline" Property="Visibility" Value="Collapsed" />
              <Setter TargetName="Hint" Property="FloatingTarget" Value="{Binding ElementName=OuterBorder}" />
              <Setter TargetName="Hint" Property="FloatingAlignment" Value="Center" />
              <Setter TargetName="Hint" Property="FloatingMargin" Value="4,0" />
              <Setter TargetName="Hint" Property="InitialVerticalOffset" Value="{Binding ElementName=Hint, Path=ActualHeight, Converter={StaticResource DivisionConverter}, ConverterParameter=2}" />
            </Trigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" />
                <Condition Property="wpf:HintAssist.IsFloating" Value="True" />
                <Condition SourceName="Hint" Property="IsHintInFloatingPosition" Value="True" />
              </MultiTrigger.Conditions>
              <Setter TargetName="Hint" Property="wpf:HintAssist.ApplyHintPaddingBrush" Value="True" />
            </MultiTrigger>
 
            <!-- IsEnabled -->
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsEnabled" Value="False" />
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="False" />
              </MultiTrigger.Conditions>
              <Setter TargetName="OuterBorder" Property="BorderBrush" Value="Transparent" />
              <Setter TargetName="OuterBorder" Property="wpf:BottomDashedLineAdorner.IsAttached" Value="True" />
              <Setter TargetName="OuterBorder" Property="wpf:BottomDashedLineAdorner.DashStyle" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:TextFieldAssist.HasFilledTextField), Converter={StaticResource BooleanToDashStyleConverter}}" />
              <Setter TargetName="ContentGrid" Property="Opacity" Value="{x:Static wpf:Constants.TextBoxNotEnabledOpacity}" />
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsEnabled" Value="False" />
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" />
              </MultiTrigger.Conditions>
              <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.PasswordBox.OutlineInactiveBorder}" />
              <Setter TargetName="PART_ContentHost" Property="Opacity" Value="{x:Static wpf:Constants.TextBoxNotEnabledOpacity}" />
              <Setter TargetName="HintWrapper" Property="Opacity" Value="{x:Static wpf:Constants.TextBoxNotEnabledOpacity}" />
              <Setter TargetName="PART_ClearButton" Property="Opacity" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:HintAssist.HintOpacity), Converter={x:Static converters:MathConverter.MultiplyInstance}, ConverterParameter={x:Static wpf:Constants.TextBoxNotEnabledOpacity}}" />
              <Setter TargetName="LeadingPackIcon" Property="Opacity" Value="{Binding ElementName=PART_ClearButton, Path=Opacity}" />
              <Setter TargetName="PrefixTextBlock" Property="Opacity" Value="{Binding ElementName=PART_ClearButton, Path=Opacity}" />
              <Setter TargetName="SuffixTextBlock" Property="Opacity" Value="{Binding ElementName=PART_ClearButton, Path=Opacity}" />
              <Setter TargetName="TrailingPackIcon" Property="Opacity" Value="{Binding ElementName=PART_ClearButton, Path=Opacity}" />
              <Setter TargetName="RevealPasswordButton" Property="Opacity" Value="{Binding ElementName=PART_ClearButton, Path=Opacity}" />
              <Setter TargetName="RevealPasswordTextBox" Property="Opacity" Value="{x:Static wpf:Constants.TextBoxNotEnabledOpacity}" />
            </MultiTrigger>
 
            <!-- IsKeyboardFocused -->
            <Trigger Property="IsKeyboardFocusWithin" Value="True">
              <Setter TargetName="HintWrapper" Property="Opacity" Value="1" />
              <Setter Property="BorderBrush" Value="{Binding Path=(wpf:TextFieldAssist.UnderlineBrush), RelativeSource={RelativeSource Self}}" />
              <Setter TargetName="Underline" Property="IsActive" Value="True" />
            </Trigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsKeyboardFocusWithin" Value="True" />
                <Condition Property="Validation.HasError" Value="False" />
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" />
              </MultiTrigger.Conditions>
              <Setter Property="BorderBrush" Value="{Binding Path=(wpf:TextFieldAssist.UnderlineBrush), RelativeSource={RelativeSource Self}}" />
              <Setter TargetName="OuterBorder" Property="BorderThickness" Value="{Binding Path=(wpf:TextFieldAssist.OutlinedBorderActiveThickness), RelativeSource={RelativeSource TemplatedParent}}" />
              <Setter TargetName="ContentGrid" Property="Margin">
                <Setter.Value>
                  <MultiBinding Converter="{x:Static converters:OutlinedStyleActiveBorderMarginCompensationConverter.Instance}">
                    <Binding Path="BorderThickness" RelativeSource="{RelativeSource TemplatedParent}" />
                    <Binding Path="(wpf:TextFieldAssist.OutlinedBorderActiveThickness)" RelativeSource="{RelativeSource TemplatedParent}" />
                  </MultiBinding>
                </Setter.Value>
              </Setter>
            </MultiTrigger>
 
            <!-- IsMouseOver -->
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsMouseOver" Value="True" />
                <Condition Property="wpf:TextFieldAssist.HasFilledTextField" Value="False" />
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="False" />
                <Condition Property="wpf:TextFieldAssist.NewSpecHighlightingEnabled" Value="False" />
              </MultiTrigger.Conditions>
              <Setter Property="BorderBrush" Value="{Binding Path=(wpf:TextFieldAssist.UnderlineBrush), RelativeSource={RelativeSource Self}}" />
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsMouseOver" Value="True" />
                <Condition Property="wpf:TextFieldAssist.HasFilledTextField" Value="False" />
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="False" />
                <Condition Property="wpf:TextFieldAssist.NewSpecHighlightingEnabled" Value="True" />
              </MultiTrigger.Conditions>
              <Setter TargetName="OuterBorder" Property="BorderThickness" Value="0,0,0,2" />
              <Setter TargetName="OuterBorder" Property="Padding" Value="{Binding Path=Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessCloneConverter}}" />
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsMouseOver" Value="True" />
                <Condition Property="wpf:TextFieldAssist.HasFilledTextField" Value="True" />
              </MultiTrigger.Conditions>
              <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.PasswordBox.HoverBackground}" />
              <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.PasswordBox.HoverBorder}" />
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsMouseOver" Value="True" />
                <Condition Property="Validation.HasError" Value="False" />
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" />
              </MultiTrigger.Conditions>
              <Setter TargetName="OuterBorder" Property="BorderThickness" Value="{Binding Path=(wpf:TextFieldAssist.OutlinedBorderActiveThickness), RelativeSource={RelativeSource TemplatedParent}}" />
              <Setter TargetName="ContentGrid" Property="Margin">
                <Setter.Value>
                  <MultiBinding Converter="{x:Static converters:OutlinedStyleActiveBorderMarginCompensationConverter.Instance}">
                    <Binding Path="BorderThickness" RelativeSource="{RelativeSource TemplatedParent}" />
                    <Binding Path="(wpf:TextFieldAssist.OutlinedBorderActiveThickness)" RelativeSource="{RelativeSource TemplatedParent}" />
                  </MultiBinding>
                </Setter.Value>
              </Setter>
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsMouseOver" Value="True" />
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" />
                <Condition Property="wpf:HintAssist.IsFloating" Value="True" />
                <Condition SourceName="Hint" Property="IsHintInFloatingPosition" Value="True" />
              </MultiTrigger.Conditions>
              <Setter TargetName="HintWrapper" Property="Opacity" Value="1" />
            </MultiTrigger>
 
            <!-- VerticalContentAlignment.Stretch -->
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="VerticalContentAlignment" Value="Stretch" />
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="False" />
              </MultiTrigger.Conditions>
              <Setter TargetName="Hint" Property="InitialVerticalOffset">
                <Setter.Value>
                  <MultiBinding Converter="{x:Static converters:FloatingHintInitialVerticalOffsetConverter.Instance}">
                    <Binding ElementName="PART_ContentHost" Path="ActualHeight" />
                    <Binding ElementName="Hint" Path="ActualHeight" />
                    <Binding Source="{StaticResource One}" />
                  </MultiBinding>
                </Setter.Value>
              </Setter>
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="VerticalContentAlignment" Value="Stretch" />
                <Condition SourceName="PART_ContentHost" Property="ScrollViewer.ComputedHorizontalScrollBarVisibility" Value="Visible"/>
              </MultiTrigger.Conditions>
              <Setter Property="wpf:TextFieldAssist.TextBoxViewMargin" Value="{x:Static wpf:Constants.DefaultTextBoxViewMarginStretch}" />
            </MultiTrigger>
 
            <!-- Validation.HasError -->
            <Trigger Property="Validation.HasError" Value="true">
              <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.ValidationError}" />
              <Setter TargetName="Underline" Property="Background" Value="{DynamicResource MaterialDesign.Brush.ValidationError}" />
              <Setter TargetName="Hint" Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.ValidationError}" />
            </Trigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="Validation.HasError" Value="True" />
                <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" />
              </MultiTrigger.Conditions>
              <Setter TargetName="FooterGrid" Property="Margin" Value="0,0,1,0" />
              <Setter TargetName="OuterBorder" Property="BorderThickness" Value="{Binding Path=(wpf:TextFieldAssist.OutlinedBorderActiveThickness), RelativeSource={RelativeSource TemplatedParent}}" />
              <Setter TargetName="ContentGrid" Property="Margin">
                <Setter.Value>
                  <MultiBinding Converter="{x:Static converters:OutlinedStyleActiveBorderMarginCompensationConverter.Instance}">
                    <Binding Path="BorderThickness" RelativeSource="{RelativeSource TemplatedParent}" />
                    <Binding Path="(wpf:TextFieldAssist.OutlinedBorderActiveThickness)" RelativeSource="{RelativeSource TemplatedParent}" />
                  </MultiBinding>
                </Setter.Value>
              </Setter>
            </MultiTrigger>
 
            <!-- Reveal icon -->
            <Trigger SourceName="RevealPasswordButton" Property="IsChecked" Value="False">
              <Setter TargetName="ContentGrid" Property="wpf:PasswordBoxAssist.IsPasswordRevealed" Value="False" />
              <Setter TargetName="RevealPasswordIcon" Property="Kind" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:PasswordBoxAssist.PasswordMaskedIcon)}" />
            </Trigger>
 
            <Trigger SourceName="RevealPasswordButton" Property="IsChecked" Value="True">
              <Setter TargetName="ContentGrid" Property="wpf:PasswordBoxAssist.IsPasswordRevealed" Value="True" />
              <Setter TargetName="RevealPasswordIcon" Property="Kind" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:PasswordBoxAssist.PasswordRevealedIcon)}" />
            </Trigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
    <Setter Property="Validation.ErrorTemplate" Value="{StaticResource MaterialDesignValidationErrorTemplate}" />
    <Setter Property="internal:ClearText.HandlesClearCommand" Value="True" />
    <Setter Property="wpf:BehaviorsAssist.Behaviors">
      <Setter.Value>
        <wpf:BehaviorCollection>
          <internalbehaviors:PasswordBoxBehavior />
        </wpf:BehaviorCollection>
      </Setter.Value>
    </Setter>
    <Setter Property="wpf:HintAssist.Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
    <Setter Property="wpf:HintAssist.HelperTextStyle" Value="{StaticResource MaterialDesignPasswordHelperTextBlock}" />
    <Setter Property="wpf:TextFieldAssist.CharacterCounterStyle" Value="{StaticResource MaterialDesignPasswordCharacterCounterTextBlock}" />
    <Setter Property="wpf:TextFieldAssist.CharacterCounterVisibility" Value="Visible" />
    <Setter Property="wpf:PasswordBoxAssist.IsPasswordRevealed" Value="False" />
    <Setter Property="wpf:PasswordBoxAssist.SuppressBindingGuard" Value="True" />
    <Setter Property="wpf:TextFieldAssist.TextBoxViewMargin" Value="{x:Static wpf:Constants.DefaultTextBoxViewMargin}" />
    <Setter Property="wpf:TextFieldAssist.TextBoxViewVerticalAlignment" Value="Stretch" />
    <Setter Property="wpf:TextFieldAssist.UnderlineBrush" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
  </Style>
 
  <Style x:Key="MaterialDesignFloatingHintRevealPasswordBox"
         TargetType="{x:Type PasswordBox}"
         BasedOn="{StaticResource MaterialDesignRevealPasswordBox}">
    <Setter Property="wpf:HintAssist.IsFloating" Value="True" />
    <Setter Property="Padding" Value="{x:Static wpf:Constants.FloatingTextBoxDefaultPadding}" />
  </Style>
 
  <Style x:Key="MaterialDesignFilledRevealPasswordBox"
         TargetType="{x:Type PasswordBox}"
         BasedOn="{StaticResource MaterialDesignFloatingHintRevealPasswordBox}">
    <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.PasswordBox.FilledBackground}" />
    <Setter Property="Padding" Value="{x:Static wpf:Constants.FilledTextBoxDefaultPadding}" />
    <Setter Property="wpf:TextFieldAssist.HasFilledTextField" Value="True" />
    <Setter Property="wpf:TextFieldAssist.TextFieldCornerRadius" Value="4,4,0,0" />
    <Setter Property="wpf:TextFieldAssist.UnderlineCornerRadius" Value="0" />
  </Style>
 
  <Style x:Key="MaterialDesignOutlinedRevealPasswordBox"
         TargetType="{x:Type PasswordBox}"
         BasedOn="{StaticResource MaterialDesignFloatingHintRevealPasswordBox}">
    <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.PasswordBox.OutlineBorder}" />
    <Setter Property="BorderThickness" Value="{x:Static wpf:Constants.DefaultOutlinedBorderInactiveThickness}" />
    <Setter Property="Padding" Value="{x:Static wpf:Constants.OutlinedTextBoxDefaultPadding}" />
    <Setter Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" />
    <Setter Property="wpf:TextFieldAssist.TextFieldCornerRadius" Value="4" />
  </Style>
 
</ResourceDictionary>