Themes/MaterialDesignTheme.ComboBox.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:convertersInternal="clr-namespace:MaterialDesignThemes.Wpf.Converters.Internal"
                    xmlns:internal="clr-namespace:MaterialDesignThemes.Wpf.Internal"
                    xmlns:system="clr-namespace:System;assembly=mscorlib"
                    xmlns:wpf="clr-namespace:MaterialDesignThemes.Wpf">
 
  <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Button.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Shadows.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ValidationErrorTemplate.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Menu.xaml" />
  </ResourceDictionary.MergedDictionaries>
   
  <system:String x:Key="AllowCollapse">AllowCollapse</system:String>
 
  <ControlTemplate x:Key="PopupContentClassicTemplate" TargetType="ContentControl">
    <ControlTemplate.Resources>
      <system:Double x:Key="PopupTopBottomMargin">8</system:Double>
    </ControlTemplate.Resources>
    <Grid MinWidth="{Binding Path=ContentMinWidth, RelativeSource={RelativeSource AncestorType=wpf:ComboBoxPopup}}" Margin="{Binding Path=ContentMargin, RelativeSource={RelativeSource AncestorType=wpf:ComboBoxPopup}}">
      <Grid.RowDefinitions>
        <RowDefinition Height="*" />
      </Grid.RowDefinitions>
      <Border Background="Transparent"
              BorderBrush="{DynamicResource MaterialDesignShadowBrush}"
              BorderThickness="1"
              CornerRadius="{Binding Path=CornerRadius, RelativeSource={RelativeSource AncestorType=wpf:ComboBoxPopup}}">
        <Border.Effect>
          <BlurEffect Radius="6" />
        </Border.Effect>
      </Border>
      <Border Margin="1"
              Background="{Binding ElementName=PART_Popup, Path=Background}"
              CornerRadius="{Binding Path=CornerRadius, RelativeSource={RelativeSource AncestorType=wpf:ComboBoxPopup}}">
        <Grid SnapsToDevicePixels="True">
          <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
          </Grid.RowDefinitions>
          <Border Grid.Row="0" Height="{StaticResource PopupTopBottomMargin}" />
          <ContentPresenter Grid.Row="1" />
          <Border Grid.Row="2" Height="{StaticResource PopupTopBottomMargin}" />
        </Grid>
      </Border>
    </Grid>
  </ControlTemplate>
 
  <Style x:Key="MaterialDesignComboBoxEditableTextBox" TargetType="{x:Type TextBox}">
    <Setter Property="AllowDrop" Value="True" />
    <Setter Property="ContextMenu" Value="{StaticResource MaterialDesignDefaultContextMenu}" />
    <Setter Property="FocusVisualStyle" Value="{x:Null}" />
    <Setter Property="MinHeight" Value="0" />
    <Setter Property="MinWidth" Value="0" />
    <Setter Property="OverridesDefaultStyle" Value="True" />
    <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst" />
    <Setter Property="Stylus.IsFlicksEnabled" Value="False" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type TextBox}">
          <ScrollViewer x:Name="PART_ContentHost"
                        wpf:ScrollViewerAssist.IgnorePadding="True"
                        Focusable="False"
                        HorizontalScrollBarVisibility="Hidden"
                        SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                        UseLayoutRounding="{TemplateBinding UseLayoutRounding}"
                        VerticalScrollBarVisibility="Hidden" />
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
 
  <ControlTemplate x:Key="MaterialDesignComboBoxItemTemplate" TargetType="{x:Type ComboBoxItem}">
    <Grid x:Name="GridWrapper">
      <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
      </Grid.RowDefinitions>
      <VisualStateManager.VisualStateGroups>
        <VisualStateGroup Name="CommonStates">
          <VisualStateGroup.Transitions>
            <VisualTransition GeneratedDuration="0:0:0.3" To="Normal">
              <VisualTransition.GeneratedEasingFunction>
                <CircleEase EasingMode="EaseOut" />
              </VisualTransition.GeneratedEasingFunction>
            </VisualTransition>
          </VisualStateGroup.Transitions>
          <VisualState Name="Normal" />
          <VisualState Name="MouseOver">
            <Storyboard>
              <DoubleAnimation Storyboard.TargetName="MouseOverBorder"
                               Storyboard.TargetProperty="Opacity"
                               To="0.1"
                               Duration="0" />
            </Storyboard>
          </VisualState>
        </VisualStateGroup>
        <VisualStateGroup Name="SelectionStates">
          <VisualStateGroup.Transitions>
            <VisualTransition GeneratedDuration="0:0:0.3" />
          </VisualStateGroup.Transitions>
          <VisualState Name="Selected">
            <Storyboard>
              <DoubleAnimation Storyboard.TargetName="SelectedBorder"
                               Storyboard.TargetProperty="Opacity"
                               To="0.18"
                               Duration="0" />
            </Storyboard>
          </VisualState>
          <VisualState Name="Unselected" />
        </VisualStateGroup>
        <VisualStateGroup Name="FocusStates">
          <VisualStateGroup.Transitions>
            <VisualTransition GeneratedDuration="0:0:0.3" To="Unfocused" />
          </VisualStateGroup.Transitions>
          <VisualState Name="Focused">
            <Storyboard>
              <DoubleAnimation Storyboard.TargetName="MouseOverBorder"
                               Storyboard.TargetProperty="Opacity"
                               To="0.1"
                               Duration="0" />
            </Storyboard>
          </VisualState>
          <VisualState Name="Unfocused" />
        </VisualStateGroup>
      </VisualStateManager.VisualStateGroups>
 
      <Border x:Name="BackBorder"
              Background="{TemplateBinding Background}"
              BorderBrush="{TemplateBinding BorderBrush}"
              BorderThickness="{TemplateBinding BorderThickness}"
              SnapsToDevicePixels="True" />
 
      <Border x:Name="MouseOverBorder"
              Background="{TemplateBinding Foreground, Converter={x:Static converters:BrushRoundConverter.Instance}}"
              BorderBrush="{TemplateBinding BorderBrush}"
              BorderThickness="{TemplateBinding BorderThickness}"
              Opacity="0"
              SnapsToDevicePixels="True" />
      <Border x:Name="SelectedBorder"
              Background="{TemplateBinding Foreground, Converter={x:Static converters:BrushRoundConverter.Instance}}"
              Opacity="0"
              RenderTransformOrigin="0.5,0.5" />
      <wpf:Ripple Padding="{TemplateBinding Padding}"
                  HorizontalAlignment="Stretch"
                  VerticalAlignment="Stretch"
                  HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                  VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                  Content="{TemplateBinding Content}"
                  ContentTemplate="{TemplateBinding ContentTemplate}"
                  ContentTemplateSelector="{TemplateBinding ContentTemplateSelector}"
                  Feedback="{TemplateBinding Foreground, Converter={x:Static converters:BrushRoundConverter.Instance}}"
                  Focusable="False"
                  RecognizesAccessKey="False"
                  SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
    </Grid>
    <ControlTemplate.Triggers>
      <Trigger Property="IsEnabled" Value="False">
        <Setter TargetName="GridWrapper" Property="Opacity" Value="{x:Static wpf:Constants.TextBoxNotEnabledOpacity}" />
      </Trigger>
      <MultiTrigger>
        <MultiTrigger.Conditions>
          <Condition Property="Tag" Value="{StaticResource AllowCollapse}" />
          <Condition Property="IsSelected" Value="True" />
        </MultiTrigger.Conditions>
        <Setter Property="Height" Value="0" />
      </MultiTrigger>
    </ControlTemplate.Triggers>
  </ControlTemplate>
 
  <Style x:Key="MaterialDesignComboBoxItemStyle" TargetType="{x:Type ComboBoxItem}">
    <Style.Resources>
      <Style x:Key="FocusVisual">
        <Setter Property="Control.Template">
          <Setter.Value>
            <ControlTemplate>
              <Rectangle Margin="2,2,2,2"
                         SnapsToDevicePixels="True"
                         Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"
                         StrokeDashArray="1 2"
                         StrokeThickness="1" />
            </ControlTemplate>
          </Setter.Value>
        </Setter>
      </Style>
    </Style.Resources>
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="BorderBrush" Value="Transparent" />
    <Setter Property="BorderThickness" Value="0" />
    <Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}" />
    <Setter Property="HorizontalContentAlignment" Value="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" />
    <Setter Property="Padding" Value="16,8" />
    <Setter Property="SnapsToDevicePixels" Value="True" />
    <Setter Property="Template" Value="{StaticResource MaterialDesignComboBoxItemTemplate}" />
    <Setter Property="VerticalContentAlignment" Value="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" />
  </Style>
 
  <Style x:Key="MaterialDesignComboBoxItemSelectedCollapsedStyle"
         TargetType="{x:Type ComboBoxItem}"
         BasedOn="{StaticResource MaterialDesignComboBoxItemStyle}">
    <Setter Property="Tag" Value="{StaticResource AllowCollapse}" />
  </Style>
 
  <Style x:Key="MaterialDesignComboBoxToggleButton" TargetType="{x:Type ToggleButton}">
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="ClickMode" Value="Press" />
    <Setter Property="Focusable" Value="False" />
    <Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.Foreground)}" />
    <Setter Property="IsTabStop" Value="False" />
    <Setter Property="OverridesDefaultStyle" Value="True" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type ToggleButton}">
          <Grid>
            <Border x:Name="ToggleOuterBorder"
                    Padding="{TemplateBinding Padding}"
                    Background="{TemplateBinding Background}"
                    BorderBrush="{TemplateBinding BorderBrush}"
                    BorderThickness="{TemplateBinding BorderThickness}">
              <Border x:Name="splitBorder"
                      Margin="0"
                      HorizontalAlignment="Right"
                      VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                      BorderBrush="Transparent"
                      BorderThickness="0">
                <Path x:Name="arrow"
                      Width="{x:Static wpf:Constants.ComboBoxArrowSize}"
                      Height="{x:Static wpf:Constants.ComboBoxArrowSize}"
                      Margin="0"
                      HorizontalAlignment="Right"
                      VerticalAlignment="Center"
                      Data="M7,10L12,15L17,10H7Z"
                      Fill="{TemplateBinding Foreground}"
                      RenderTransformOrigin="0.5,0.5"
                      Stretch="Uniform" />
              </Border>
            </Border>
          </Grid>
          <ControlTemplate.Triggers>
            <MultiDataTrigger>
              <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="True" />
                <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="False" />
              </MultiDataTrigger.Conditions>
            </MultiDataTrigger>
            <MultiDataTrigger>
              <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="True" />
                <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="True" />
              </MultiDataTrigger.Conditions>
              <Setter Property="BorderBrush" Value="{Binding Path=(wpf:TextFieldAssist.UnderlineBrush), RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" />
            </MultiDataTrigger>
            <Trigger Property="IsPressed" Value="True">
              <Setter TargetName="arrow" Property="Fill" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
            </Trigger>
            <Trigger Property="IsEnabled" Value="False">
              <Setter TargetName="arrow" Property="Fill" Value="{DynamicResource MaterialDesign.Brush.ComboBox.Disabled}" />
            </Trigger>
            <MultiDataTrigger>
              <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="False" />
                <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="False" />
              </MultiDataTrigger.Conditions>
              <Setter TargetName="ToggleOuterBorder" Property="BorderBrush" Value="Transparent" />
            </MultiDataTrigger>
            <MultiDataTrigger>
              <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="False" />
                <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="True" />
              </MultiDataTrigger.Conditions>
              <Setter TargetName="ToggleOuterBorder" Property="BorderBrush" Value="Transparent" />
              <Setter TargetName="splitBorder" Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.ComboBox.Disabled}" />
            </MultiDataTrigger>
            <Trigger Property="IsChecked" Value="True">
              <Setter TargetName="arrow" Property="RenderTransform">
                <Setter.Value>
                  <ScaleTransform ScaleY="-1" />
                </Setter.Value>
              </Setter>
            </Trigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
 
  <ControlTemplate x:Key="MaterialDesignFloatingHintComboBoxTemplate" TargetType="{x:Type ComboBox}">
    <ControlTemplate.Resources>
      <convertersInternal:TextFieldClearButtonVisibilityConverter x:Key="ClearButtonVisibilityConverter" ContentEmptyVisibility="Collapsed" />
      <converters:ThicknessCloneConverter x:Key="HelperTextMarginConverter" CloneEdges="Left" />
      <converters:TextFieldPrefixTextVisibilityConverter x:Key="PrefixSuffixTextVisibilityConverter" HiddenState="Collapsed" />
      <converters:MathConverter x:Key="DivisionConverter" Operation="Divide" Offset="1.5" />
      <converters:BooleanToDashStyleConverter x:Key="BooleanToDashStyleConverter" TrueValue="{x:Static DashStyles.Solid}" />
    </ControlTemplate.Resources>
    <Grid>
      <AdornerDecorator>
        <Border x:Name="OuterBorder"
                wpf:BottomDashedLineAdorner.IsAttached="False"
                wpf:BottomDashedLineAdorner.Brush="{TemplateBinding BorderBrush}"
                wpf:BottomDashedLineAdorner.Thickness="{TemplateBinding BorderThickness}"
                Background="{TemplateBinding Background}"
                BorderBrush="{TemplateBinding BorderBrush}"
                BorderThickness="{TemplateBinding BorderThickness}"
                CornerRadius="{Binding Path=(wpf:TextFieldAssist.TextFieldCornerRadius), RelativeSource={RelativeSource TemplatedParent}}"
                SnapsToDevicePixels="True">
          <Grid x:Name="ContentGrid">
            <Grid.ColumnDefinitions>
              <ColumnDefinition Width="*" />
              <ColumnDefinition Width="0" MinWidth="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" />
            </Grid.ColumnDefinitions>
            <ToggleButton x:Name="toggleButton"
                          Foreground="{TemplateBinding Foreground}"
                          Grid.ColumnSpan="2"
                          Opacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
                          Padding="{TemplateBinding Padding}"
                          VerticalContentAlignment="Center"
                          BorderBrush="{TemplateBinding BorderBrush}"
                          IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
                          Style="{StaticResource MaterialDesignComboBoxToggleButton}" />
            <Grid x:Name="InnerRoot"
                  Grid.Row="0"
                  Grid.Column="0"
                  HorizontalAlignment="Stretch"
                  Margin="{TemplateBinding Padding}"
                  MinHeight="16"
                  VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                  SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                  UseLayoutRounding="{TemplateBinding UseLayoutRounding}">
              <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="Center"
                            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"
                         FontSize="{TemplateBinding FontSize}"
                         Opacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
                         Text="{TemplateBinding wpf:TextFieldAssist.PrefixText}"
                         VerticalAlignment="Center">
                <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" ElementName="PART_EditableTextBox" />
                    <Binding Path="IsEditable" RelativeSource="{RelativeSource TemplatedParent}" />
                  </MultiBinding>
                </TextBlock.Visibility>
              </TextBlock>
 
              <ContentPresenter x:Name="contentPresenter"
                                Grid.Column="2"
                                Margin="{TemplateBinding wpf:TextFieldAssist.TextBoxViewMargin}"
                                Content="{TemplateBinding SelectionBoxItem}"
                                ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}"
                                ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
                                ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
                                HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                IsHitTestVisible="False"
                                VerticalAlignment="Center"/>
              <TextBox x:Name="PART_EditableTextBox"
                       Grid.Column="2"
                       MinWidth="10"
                       HorizontalAlignment="Stretch"
                       HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                       CaretBrush="{TemplateBinding Foreground}"
                       IsReadOnly="{TemplateBinding IsReadOnly}"
                       Focusable="{TemplateBinding IsEditable}"
                       MaxLength="{Binding Path=(wpf:ComboBoxAssist.MaxLength), RelativeSource={RelativeSource Mode=TemplatedParent}}"
                       Style="{StaticResource MaterialDesignComboBoxEditableTextBox}"
                       VerticalAlignment="Center"
                       Visibility="Collapsed" />
 
              <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_EditableTextBox}"
                             HintHost="{Binding RelativeSource={RelativeSource TemplatedParent}}"
                             wpf:HintAssist.Background="{TemplateBinding wpf:HintAssist.Background}"
                             wpf:HintAssist.HintPaddingBrush="{TemplateBinding wpf:HintAssist.HintPaddingBrush}"
                             SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                             UseLayoutRounding="{TemplateBinding UseLayoutRounding}">
                <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 Path="IsEditable" RelativeSource="{RelativeSource TemplatedParent}" />
                  </MultiBinding>
                </wpf:SmartHint.InitialHorizontalOffset>
                <wpf:SmartHint.Margin>
                  <MultiBinding Converter="{x:Static converters:FloatingHintMarginConverter.Instance}">
                    <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:HintAssist.IsFloating)" />
                    <Binding ElementName="PART_EditableTextBox" Path="IsKeyboardFocusWithin" />
                    <Binding Path="IsEditable" RelativeSource="{RelativeSource TemplatedParent}" />
                    <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"
                         FontSize="{TemplateBinding FontSize}"
                         Opacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
                         Text="{TemplateBinding wpf:TextFieldAssist.SuffixText}"
                         VerticalAlignment="Center">
                <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" ElementName="PART_EditableTextBox" />
                    <Binding Path="IsEditable" RelativeSource="{RelativeSource TemplatedParent}" />
                  </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="Center"
                            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="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"
                      Foreground="{TemplateBinding Foreground}"
                      VerticalAlignment="Center"
                      Style="{StaticResource MaterialDesignToolButton}">
                <Button.Visibility>
                  <MultiBinding Converter="{StaticResource ClearButtonVisibilityConverter}">
                    <Binding Path="(wpf:TextFieldAssist.HasClearButton)" RelativeSource="{RelativeSource TemplatedParent}" />
                    <Binding ElementName="Hint" Path="IsContentNullOrEmpty" />
                    <Binding Path="IsEditable" RelativeSource="{RelativeSource TemplatedParent}" />
                  </MultiBinding>
                </Button.Visibility>
                <wpf:PackIcon x:Name="ClearButtonIcon"
                              Margin="0"
                              Kind="CloseCircle"
                              Height="auto"
                              Width="auto" />
              </Button>
            </Grid>
          </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 x:Name="HelperTextWrapper"
              IsHitTestVisible="False"
              Margin="{TemplateBinding Padding, Converter={StaticResource HelperTextMarginConverter}}"
              VerticalAlignment="Bottom">
        <TextBlock x:Name="HelperTextTextBlock"
             Canvas.Top="2"
             MaxWidth="{Binding ActualWidth, ElementName=toggleButton}"
             FontSize="{TemplateBinding wpf:HintAssist.HelperTextFontSize}"
             Opacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
             Style="{Binding Path=(wpf:HintAssist.HelperTextStyle), RelativeSource={RelativeSource TemplatedParent}}"
             Text="{TemplateBinding wpf:HintAssist.HelperText}" />
      </Canvas>
      <wpf:ComboBoxPopup x:Name="PART_Popup"
                   Grid.Column="0"
                   wpf:ColorZoneAssist.Mode="{Binding Path=(wpf:ColorZoneAssist.Mode), RelativeSource={RelativeSource TemplatedParent}}"
                   AllowsTransparency="True"
                   ClassicContentTemplate="{StaticResource PopupContentClassicTemplate}"
                   ContentMargin="6,0,6,6"
                   ContentMinWidth="{Binding Path=ActualWidth, ElementName=OuterBorder}"
                   CustomPopupPlacementCallbackOverride="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ComboBoxAssist.CustomPopupPlacementCallback)}"
                   DefaultVerticalOffset="-1"
                   DownVerticalOffset="0"
                   Focusable="False"
                   HorizontalOffset="0"
                   IsOpen="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
                   Placement="Custom"
                   PlacementTarget="{Binding ElementName=OuterBorder}"
                   PopupAnimation="Fade"
                   RelativeHorizontalOffset="-6"
                   SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                   Tag="{DynamicResource MaterialDesign.Brush.Background}"
                   UpVerticalOffset="15"
                   UseLayoutRounding="{TemplateBinding UseLayoutRounding}"
                   VerticalOffset="0">
        <wpf:ComboBoxPopup.Background>
          <MultiBinding Converter="{x:Static converters:FallbackBrushConverter.Instance}">
            <Binding Path="Background" RelativeSource="{RelativeSource TemplatedParent}" />
            <Binding ElementName="PART_Popup" Path="Tag" />
          </MultiBinding>
        </wpf:ComboBoxPopup.Background>
        <wpf:ComboBoxPopup.Style>
          <Style TargetType="wpf:ComboBoxPopup">
            <Setter Property="CornerRadius" Value="0,0,4,4" />
            <Style.Triggers>
              <Trigger Property="OpenDirection" Value="Up">
                <Setter Property="CornerRadius" Value="4,4,0,0" />
              </Trigger>
            </Style.Triggers>
          </Style>
        </wpf:ComboBoxPopup.Style>
        <ContentControl>
          <ScrollViewer MinHeight="1"
                  MaxHeight="{TemplateBinding MaxDropDownHeight}"
                  Background="{Binding Background, ElementName=PART_Popup}">
            <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" />
          </ScrollViewer>
        </ContentControl>
      </wpf:ComboBoxPopup>
    </Grid>
    <ControlTemplate.Triggers>
 
      <Trigger Property="IsEditable" Value="True">
        <Setter TargetName="PART_EditableTextBox" Property="Visibility" Value="Visible" />
        <Setter TargetName="Underline" Property="Visibility" Value="{Binding Path=(wpf:TextFieldAssist.DecorationVisibility), RelativeSource={RelativeSource TemplatedParent}}" />
        <Setter TargetName="contentPresenter" Property="Visibility" Value="Collapsed" />
      </Trigger>
      <MultiTrigger>
        <MultiTrigger.Conditions>
          <Condition Property="IsGrouping" Value="True" />
          <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="False" />
        </MultiTrigger.Conditions>
        <Setter Property="ScrollViewer.CanContentScroll" Value="False" />
      </MultiTrigger>
 
      <!-- Outlined combo box -->
      <Trigger Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True">
        <Setter TargetName="PART_Popup" Property="ContentMargin" Value="6,0,6,6" />
        <Setter TargetName="PART_Popup" Property="ContentMinWidth" Value="{Binding Path=ActualWidth, ElementName=OuterBorder}" />
        <Setter TargetName="PART_Popup" Property="CornerRadius" Value="{Binding Path=(wpf:TextFieldAssist.TextFieldCornerRadius), RelativeSource={RelativeSource TemplatedParent}}" />
        <Setter TargetName="PART_Popup" Property="DefaultVerticalOffset" Value="0" />
        <Setter TargetName="PART_Popup" Property="DownVerticalOffset" Value="0" />
        <Setter TargetName="PART_Popup" Property="RelativeHorizontalOffset" Value="-6" />
        <Setter TargetName="PART_Popup" Property="UpVerticalOffset" Value="0" />
        <Setter TargetName="Underline" Property="Visibility" Value="Collapsed" />
        <Setter TargetName="OuterBorder" Property="CornerRadius" Value="{Binding Path=(wpf:TextFieldAssist.TextFieldCornerRadius), RelativeSource={RelativeSource TemplatedParent}}" />
        <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>
 
      <!-- 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>
 
      <!-- 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="ContentGrid" Property="Opacity" Value="{x:Static wpf:Constants.TextBoxNotEnabledOpacity}" />
        <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="toggleButton" Property="Opacity" Value="1" />
      </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.ComboBox.OutlineInactiveBorder}" />
        <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="contentPresenter" Property="Opacity" Value="{x:Static wpf:Constants.TextBoxNotEnabledOpacity}" />
        <Setter TargetName="PART_EditableTextBox" Property="Opacity" Value="{x:Static wpf:Constants.TextBoxNotEnabledOpacity}" />
        <Setter TargetName="toggleButton" Property="Opacity" Value="1" />
      </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="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>
 
      <!-- IsDropDownOpen -->
      <Trigger Property="IsDropDownOpen" Value="True">
        <Setter TargetName="Underline" Property="IsActive" Value="True" />
      </Trigger>
      <MultiTrigger>
        <MultiTrigger.Conditions>
          <Condition Property="IsDropDownOpen" Value="True" />
          <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>
      <MultiTrigger>
        <MultiTrigger.Conditions>
          <Condition Property="IsDropDownOpen" Value="True" />
          <Condition SourceName="Hint" Property="IsContentNullOrEmpty" Value="False" />
        </MultiTrigger.Conditions>
        <Setter TargetName="Hint" Property="Foreground" Value="{Binding Path=(wpf:HintAssist.Foreground), RelativeSource={RelativeSource TemplatedParent}}" />
        <Setter TargetName="Hint" Property="HintOpacity" Value="1" />
      </MultiTrigger>
      <MultiTrigger>
        <MultiTrigger.Conditions>
          <Condition Property="IsDropDownOpen" Value="True" />
          <Condition SourceName="Hint" Property="IsContentNullOrEmpty" Value="False" />
          <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" />
        </MultiTrigger.Conditions>
        <Setter TargetName="HintWrapper" Property="Opacity" Value="1" />
      </MultiTrigger>
 
      <!-- IsMouseOver -->
      <MultiTrigger>
        <MultiTrigger.Conditions>
          <Condition Property="IsMouseOver" Value="True" />
          <Condition Property="wpf:TextFieldAssist.HasFilledTextField" Value="False" />
          <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" 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="True" />
        </MultiTrigger.Conditions>
        <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.ComboBox.HoverBackground}" />
        <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.ComboBox.HoverBorder}" />
      </MultiTrigger>
      <MultiTrigger>
        <MultiTrigger.Conditions>
          <Condition Property="IsMouseOver" Value="True" />
          <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>
 
      <!-- 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 Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.ValidationError}" />
        <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>
 
      <!-- PART_Popup.IsOpen -->
      <MultiTrigger>
        <MultiTrigger.Conditions>
          <Condition SourceName="PART_Popup" Property="IsOpen" Value="True" />
          <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 SourceName="PART_Popup" Property="IsOpen" Value="True" />
          <Condition SourceName="PART_Popup" Property="wpf:ColorZoneAssist.Mode" Value="Standard" />
        </MultiTrigger.Conditions>
        <Setter Property="TextElement.Foreground" Value="{DynamicResource MaterialDesign.Brush.Foreground}" />
        <Setter TargetName="PART_Popup" Property="Background" Value="{Binding Tag, RelativeSource={RelativeSource Self}, Converter={x:Static converters:RemoveAlphaBrushConverter.Instance}}" />
        <Setter TargetName="PART_Popup" Property="Tag" Value="{DynamicResource MaterialDesign.Brush.Background}" />
      </MultiTrigger>
      <MultiTrigger>
        <MultiTrigger.Conditions>
          <Condition SourceName="PART_Popup" Property="IsOpen" Value="True" />
          <Condition SourceName="PART_Popup" Property="wpf:ColorZoneAssist.Mode" Value="Inverted" />
        </MultiTrigger.Conditions>
        <Setter Property="TextElement.Foreground" Value="{DynamicResource MaterialDesign.Brush.Background}" />
        <Setter TargetName="PART_Popup" Property="Background" Value="{Binding Tag, RelativeSource={RelativeSource Self}, Converter={x:Static converters:RemoveAlphaBrushConverter.Instance}}" />
        <Setter TargetName="PART_Popup" Property="Tag" Value="{DynamicResource MaterialDesign.Brush.Foreground}" />
      </MultiTrigger>
      <MultiTrigger>
        <MultiTrigger.Conditions>
          <Condition SourceName="PART_Popup" Property="IsOpen" Value="True" />
          <Condition SourceName="PART_Popup" Property="wpf:ColorZoneAssist.Mode" Value="PrimaryLight" />
        </MultiTrigger.Conditions>
        <Setter Property="TextElement.Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary.Light.Foreground}" />
        <Setter TargetName="PART_Popup" Property="Background" Value="{Binding Tag, RelativeSource={RelativeSource Self}, Converter={x:Static converters:RemoveAlphaBrushConverter.Instance}}" />
        <Setter TargetName="PART_Popup" Property="Tag" Value="{DynamicResource MaterialDesign.Brush.Primary.Light}" />
      </MultiTrigger>
      <MultiTrigger>
        <MultiTrigger.Conditions>
          <Condition SourceName="PART_Popup" Property="IsOpen" Value="True" />
          <Condition SourceName="PART_Popup" Property="wpf:ColorZoneAssist.Mode" Value="PrimaryMid" />
        </MultiTrigger.Conditions>
        <Setter Property="TextElement.Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary.Foreground}" />
        <Setter TargetName="PART_Popup" Property="Background" Value="{Binding Tag, RelativeSource={RelativeSource Self}, Converter={x:Static converters:RemoveAlphaBrushConverter.Instance}}" />
        <Setter TargetName="PART_Popup" Property="Tag" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
      </MultiTrigger>
      <MultiTrigger>
        <MultiTrigger.Conditions>
          <Condition SourceName="PART_Popup" Property="IsOpen" Value="True" />
          <Condition SourceName="PART_Popup" Property="wpf:ColorZoneAssist.Mode" Value="PrimaryDark" />
        </MultiTrigger.Conditions>
        <Setter Property="TextElement.Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary.Dark.Foreground}" />
        <Setter TargetName="PART_Popup" Property="Background" Value="{Binding Tag, RelativeSource={RelativeSource Self}, Converter={x:Static converters:RemoveAlphaBrushConverter.Instance}}" />
        <Setter TargetName="PART_Popup" Property="Tag" Value="{DynamicResource MaterialDesign.Brush.Primary.Dark}" />
      </MultiTrigger>
      <MultiTrigger>
        <MultiTrigger.Conditions>
          <Condition SourceName="PART_Popup" Property="IsOpen" Value="True" />
          <Condition SourceName="PART_Popup" Property="wpf:ColorZoneAssist.Mode" Value="SecondaryLight" />
        </MultiTrigger.Conditions>
        <Setter Property="TextElement.Foreground" Value="{DynamicResource MaterialDesign.Brush.Secondary.Light.Foreground}" />
        <Setter TargetName="PART_Popup" Property="Background" Value="{Binding Tag, RelativeSource={RelativeSource Self}, Converter={x:Static converters:RemoveAlphaBrushConverter.Instance}}" />
        <Setter TargetName="PART_Popup" Property="Tag" Value="{DynamicResource MaterialDesign.Brush.Secondary.Light}" />
      </MultiTrigger>
      <MultiTrigger>
        <MultiTrigger.Conditions>
          <Condition SourceName="PART_Popup" Property="IsOpen" Value="True" />
          <Condition SourceName="PART_Popup" Property="wpf:ColorZoneAssist.Mode" Value="SecondaryMid" />
        </MultiTrigger.Conditions>
        <Setter Property="TextElement.Foreground" Value="{DynamicResource MaterialDesign.Brush.Secondary.Foreground}" />
        <Setter TargetName="PART_Popup" Property="Background" Value="{Binding Tag, RelativeSource={RelativeSource Self}, Converter={x:Static converters:RemoveAlphaBrushConverter.Instance}}" />
        <Setter TargetName="PART_Popup" Property="Tag" Value="{DynamicResource MaterialDesign.Brush.Secondary}" />
      </MultiTrigger>
      <MultiTrigger>
        <MultiTrigger.Conditions>
          <Condition SourceName="PART_Popup" Property="IsOpen" Value="True" />
          <Condition SourceName="PART_Popup" Property="wpf:ColorZoneAssist.Mode" Value="SecondaryDark" />
        </MultiTrigger.Conditions>
        <Setter Property="TextElement.Foreground" Value="{DynamicResource MaterialDesign.Brush.Secondary.Dark.Foreground}" />
        <Setter TargetName="PART_Popup" Property="Background" Value="{Binding Tag, RelativeSource={RelativeSource Self}, Converter={x:Static converters:RemoveAlphaBrushConverter.Instance}}" />
        <Setter TargetName="PART_Popup" Property="Tag" Value="{DynamicResource MaterialDesign.Brush.Secondary.Dark}" />
      </MultiTrigger>
      <MultiTrigger>
        <MultiTrigger.Conditions>
          <Condition SourceName="PART_Popup" Property="IsOpen" Value="True" />
          <Condition SourceName="PART_Popup" Property="wpf:ColorZoneAssist.Mode" Value="Light" />
        </MultiTrigger.Conditions>
        <Setter Property="TextElement.Foreground" Value="{DynamicResource MaterialDesign.Brush.ComboBox.Popup.LightForeground}" />
        <Setter TargetName="PART_Popup" Property="Background" Value="{Binding Tag, RelativeSource={RelativeSource Self}, Converter={x:Static converters:RemoveAlphaBrushConverter.Instance}}" />
        <Setter TargetName="PART_Popup" Property="Tag" Value="{DynamicResource MaterialDesign.Brush.ComboBox.Popup.LightBackground}" />
      </MultiTrigger>
      <MultiTrigger>
        <MultiTrigger.Conditions>
          <Condition SourceName="PART_Popup" Property="IsOpen" Value="True" />
          <Condition SourceName="PART_Popup" Property="wpf:ColorZoneAssist.Mode" Value="Dark" />
        </MultiTrigger.Conditions>
        <Setter Property="TextElement.Foreground" Value="{DynamicResource MaterialDesign.Brush.ComboBox.Popup.DarkForeground}" />
        <Setter TargetName="PART_Popup" Property="Background" Value="{Binding Tag, RelativeSource={RelativeSource Self}, Converter={x:Static converters:RemoveAlphaBrushConverter.Instance}}" />
        <Setter TargetName="PART_Popup" Property="Tag" Value="{DynamicResource MaterialDesign.Brush.ComboBox.Popup.DarkBackground}" />
      </MultiTrigger>
    </ControlTemplate.Triggers>
  </ControlTemplate>
 
  <Style x:Key="MaterialDesignComboBox" TargetType="{x:Type ComboBox}">
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.ComboBox.Border}" />
    <Setter Property="BorderThickness" Value="0,0,0,1" />
    <Setter Property="FocusVisualStyle" Value="{x:Null}" />
    <Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.Foreground)}" />
    <Setter Property="HorizontalAlignment" Value="Stretch" />
    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    <Setter Property="ItemContainerStyle" Value="{StaticResource MaterialDesignComboBoxItemStyle}" />
    <!-- Virtualization -->
    <Setter Property="ItemsPanel">
      <Setter.Value>
        <ItemsPanelTemplate>
          <VirtualizingStackPanel />
        </ItemsPanelTemplate>
      </Setter.Value>
    </Setter>
    <Setter Property="Padding" Value="{x:Static wpf:Constants.TextBoxDefaultPadding}" />
    <Setter Property="ScrollViewer.CanContentScroll" Value="True" />
    <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" />
    <Setter Property="ScrollViewer.PanningMode" Value="Both" />
    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
    <Setter Property="Stylus.IsFlicksEnabled" Value="False" />
    <Setter Property="Template" Value="{StaticResource MaterialDesignFloatingHintComboBoxTemplate}" />
    <Setter Property="Validation.ErrorTemplate" Value="{StaticResource MaterialDesignValidationErrorTemplate}" />
    <Setter Property="VerticalAlignment" Value="Center" />
    <Setter Property="VerticalContentAlignment" Value="Center" />
    <Setter Property="internal:ClearText.HandlesClearCommand" Value="True" />
    <Setter Property="wpf:ColorZoneAssist.Mode" Value="Standard" />
    <Setter Property="wpf:ComboBoxAssist.ShowSelectedItem" Value="True" />
    <Setter Property="wpf:HintAssist.Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
    <Setter Property="wpf:TextFieldAssist.TextBoxViewMargin" Value="{x:Static wpf:Constants.DefaultTextBoxViewMargin}" />
    <Setter Property="wpf:TextFieldAssist.UnderlineBrush" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
    <Style.Triggers>
      <Trigger Property="IsEditable" Value="True">
        <Setter Property="ContextMenu" Value="{StaticResource MaterialDesignDefaultContextMenu}" />
        <Setter Property="IsTabStop" Value="False" />
        <Setter Property="wpf:ComboBoxAssist.ShowSelectedItem" Value="True" />
      </Trigger>
      <Trigger Property="wpf:ComboBoxAssist.ShowSelectedItem" Value="False">
        <Setter Property="ItemContainerStyle" Value="{StaticResource MaterialDesignComboBoxItemSelectedCollapsedStyle}" />
      </Trigger>
    </Style.Triggers>
  </Style>
 
  <Style x:Key="MaterialDesignFloatingHintComboBox"
         TargetType="{x:Type ComboBox}"
         BasedOn="{StaticResource MaterialDesignComboBox}">
    <Setter Property="wpf:HintAssist.IsFloating" Value="True" />
    <Setter Property="Padding" Value="{x:Static wpf:Constants.FloatingTextBoxDefaultPadding}" />
  </Style>
 
  <Style x:Key="MaterialDesignFilledComboBox"
         TargetType="{x:Type ComboBox}"
         BasedOn="{StaticResource MaterialDesignFloatingHintComboBox}">
    <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.ComboBox.FilledBackground}" />
    <Setter Property="Padding" Value="{x:Static wpf:Constants.FilledTextBoxDefaultPadding}" />
    <Setter Property="VerticalAlignment" Value="Stretch" />
    <Setter Property="VerticalContentAlignment" Value="Stretch" />
    <Setter Property="wpf:TextFieldAssist.HasFilledTextField" Value="True" />
    <Setter Property="wpf:TextFieldAssist.TextFieldCornerRadius" Value="4,4,0,0" />
    <Style.Triggers>
      <Trigger Property="IsMouseOver" Value="True">
        <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.ComboBox.HoverBackground}" />
      </Trigger>
    </Style.Triggers>
  </Style>
 
  <Style x:Key="MaterialDesignOutlinedComboBox"
         TargetType="ComboBox"
         BasedOn="{StaticResource MaterialDesignFloatingHintComboBox}">
    <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.ComboBox.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>