Themes/MaterialDesignTheme.AutoSuggestBox.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:wpf="clr-namespace:MaterialDesignThemes.Wpf" xmlns:behaviors="clr-namespace:MaterialDesignThemes.Wpf.Behaviors"> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TextBox.xaml" /> <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Card.xaml" /> </ResourceDictionary.MergedDictionaries> <Style x:Key="MaterialDesignAutoSuggestBoxBase" TargetType="{x:Type wpf:AutoSuggestBox}" BasedOn="{StaticResource MaterialDesignTextBoxBase}"> <Style.Resources> <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" /> <converters:OutlinedStyleActiveBorderMarginCompensationConverter x:Key="OutlinedStyleActiveBorderMarginCompensationConverter" /> <converters:ElevationRadiusConverter x:Key="ElevationRadiusConverter" Multiplier="-1" /> </Style.Resources> <Setter Property="DropDownBackground" Value="{DynamicResource MaterialDesign.Brush.Card.Background}" /> <Setter Property="DropDownElevation" Value="Dp2" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type wpf:AutoSuggestBox}"> <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.TextBox.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="{Binding RelativeSource={RelativeSource Self}, Path=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}}" /> <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: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}" HintHost="{Binding RelativeSource={RelativeSource TemplatedParent}}" 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 RelativeSource="{RelativeSource TemplatedParent}" Path="IsReadOnly" Converter="{x:Static converters:InvertBooleanConverter.Instance}" /> </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 RelativeSource="{RelativeSource TemplatedParent}" Path="IsReadOnly" Converter="{x:Static converters:InvertBooleanConverter.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)" /> </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="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 Path="IsReadOnly" RelativeSource="{RelativeSource TemplatedParent}" Converter="{x:Static converters:InvertBooleanConverter.Instance}" /> </MultiBinding> </TextBlock.Visibility> </TextBlock> <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 Path="IsReadOnly" RelativeSource="{RelativeSource TemplatedParent}" Converter="{x:Static converters:InvertBooleanConverter.Instance}" /> </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" 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="{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:PopupEx x:Name="PART_AutoSuggestBoxPopup" MaxHeight="{TemplateBinding DropDownMaxHeight}" AllowsTransparency="True" Focusable="False" IsOpen="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsSuggestionOpen, Mode=TwoWay}" PopupAnimation="Slide" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" StaysOpen="False" Visibility="Collapsed"> <wpf:Card x:Name="PopupCard" Margin="{TemplateBinding DropDownElevation, Converter={x:Static converters:ElevationMarginConverter.Instance}}" Background="{TemplateBinding DropDownBackground}" Foreground="{DynamicResource MaterialDesignBody}" RenderOptions.ClearTypeHint="Enabled" Style="{StaticResource MaterialDesignElevatedCard}"> <ListBox x:Name="PART_AutoSuggestBoxList" Width="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=ActualWidth}" DisplayMemberPath="{TemplateBinding DisplayMember}" Focusable="False" IsSynchronizedWithCurrentItem="True" SelectedIndex="-1" ItemContainerStyle="{TemplateBinding ItemContainerStyle}" ItemTemplate="{TemplateBinding ItemTemplate}" ItemsSource="{TemplateBinding Suggestions}" SelectedItem="{TemplateBinding SelectedItem}" SelectedValue="{TemplateBinding SelectedValue}" SelectedValuePath="{TemplateBinding ValueMember}" Style="{DynamicResource MaterialDesignCardsListBox}" /> </wpf:Card> </wpf:PopupEx> <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> <!-- Multi-line TextBox (i.e. AcceptsReturn) edge case --> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="VerticalContentAlignment" Value="Stretch" /> </MultiTrigger.Conditions> <Setter TargetName="PART_ContentHost" Property="VerticalAlignment" Value="Stretch" /> </MultiTrigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="VerticalContentAlignment" Value="Stretch" /> <Condition Property="AcceptsReturn" Value="True" /> </MultiTrigger.Conditions> <Setter TargetName="PrefixTextBlock" Property="VerticalAlignment" Value="Stretch" /> <Setter TargetName="SuffixTextBlock" Property="VerticalAlignment" Value="Stretch" /> </MultiTrigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="VerticalContentAlignment" Value="Stretch" /> <Condition Property="wpf:TextFieldAssist.TextBoxIsMultiLine" Value="True" /> </MultiTrigger.Conditions> <Setter TargetName="PrefixTextBlock" Property="VerticalAlignment" Value="Stretch" /> <Setter TargetName="SuffixTextBlock" Property="VerticalAlignment" Value="Stretch" /> </MultiTrigger> <!-- Floating hint --> <Trigger Property="wpf:HintAssist.IsFloating" Value="True"> <Setter TargetName="Hint" Property="HintOpacity" Value="1" /> </Trigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="wpf:HintAssist.IsFloating" Value="True" /> <Condition Property="IsKeyboardFocused" Value="True" /> </MultiTrigger.Conditions> <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="PART_ClearButton" 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="ContentGrid" Property="Opacity" Value="{x:Static wpf:Constants.TextBoxNotEnabledOpacity}" /> </MultiTrigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="IsEnabled" Value="False" /> <Condition Property="wpf:TextFieldAssist.HasFilledTextField" Value="True" /> </MultiTrigger.Conditions> <Setter TargetName="PART_ClearButton" 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 TargetName="OuterBorder" Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.TextBox.OutlineInactiveBorder}" /> <Setter TargetName="PART_ClearButton" Property="Opacity" Value="{x:Static wpf:Constants.TextBoxNotEnabledOpacity}" /> <Setter TargetName="PART_ContentHost" Property="Opacity" Value="{x:Static wpf:Constants.TextBoxNotEnabledOpacity}" /> <Setter TargetName="PrefixTextBlock" Property="Opacity" Value="{x:Static wpf:Constants.TextBoxNotEnabledOpacity}" /> <Setter TargetName="SuffixTextBlock" Property="Opacity" Value="{x:Static wpf:Constants.TextBoxNotEnabledOpacity}" /> <Setter TargetName="ContentGrid" Property="Opacity" Value="{x:Static wpf:Constants.TextBoxNotEnabledOpacity}" /> </MultiTrigger> <!-- IsKeyboardFocused --> <Trigger Property="IsKeyboardFocused" 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="IsKeyboardFocused" Value="True" /> <Condition Property="Validation.HasError" Value="False" /> <Condition Property="wpf:ValidationAssist.HasError" Value="False" /> <Condition Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" /> </MultiTrigger.Conditions> <Setter TargetName="OuterBorder" Property="BorderBrush" Value="{Binding Path=(wpf:TextFieldAssist.UnderlineBrush), RelativeSource={RelativeSource TemplatedParent}}" /> <Setter TargetName="OuterBorder" Property="BorderThickness" Value="{Binding Path=(wpf:TextFieldAssist.OutlinedBorderActiveThickness), RelativeSource={RelativeSource TemplatedParent}}" /> <Setter TargetName="ContentGrid" Property="Margin"> <Setter.Value> <MultiBinding Converter="{StaticResource OutlinedStyleActiveBorderMarginCompensationConverter}"> <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 TargetName="OuterBorder" Property="BorderBrush" Value="{Binding Path=(wpf:TextFieldAssist.UnderlineBrush), RelativeSource={RelativeSource TemplatedParent}}" /> </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 TargetName="OuterBorder" Property="Background" Value="{DynamicResource MaterialDesign.Brush.TextBox.HoverBackground}" /> <Setter TargetName="OuterBorder" Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.TextBox.HoverBorder}" /> </MultiTrigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="IsMouseOver" Value="True" /> <Condition Property="Validation.HasError" Value="False" /> <Condition Property="wpf:ValidationAssist.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="{StaticResource OutlinedStyleActiveBorderMarginCompensationConverter}"> <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 AND AcceptsReturn=False --> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="VerticalContentAlignment" Value="Stretch" /> <Condition Property="AcceptsReturn" Value="False" /> </MultiTrigger.Conditions> <Setter Property="wpf:TextFieldAssist.TextBoxViewVerticalAlignment" Value="Center" /> </MultiTrigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="VerticalContentAlignment" Value="Stretch" /> <Condition Property="AcceptsReturn" Value="False" /> <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 RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.TextBoxLineCount)" /> </MultiBinding> </Setter.Value> </Setter> </MultiTrigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="VerticalContentAlignment" Value="Stretch" /> <Condition Property="AcceptsReturn" Value="False" /> <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 TargetName="OuterBorder" 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="{StaticResource OutlinedStyleActiveBorderMarginCompensationConverter}"> <Binding Path="BorderThickness" RelativeSource="{RelativeSource TemplatedParent}" /> <Binding Path="(wpf:TextFieldAssist.OutlinedBorderActiveThickness)" RelativeSource="{RelativeSource TemplatedParent}" /> </MultiBinding> </Setter.Value> </Setter> </MultiTrigger> <!-- ValidationAssist.HasError (when TextBox is nested inside another control) --> <Trigger Property="wpf:ValidationAssist.HasError" Value="true"> <Setter TargetName="OuterBorder" 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="wpf:ValidationAssist.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="{StaticResource OutlinedStyleActiveBorderMarginCompensationConverter}"> <Binding Path="BorderThickness" RelativeSource="{RelativeSource TemplatedParent}" /> <Binding Path="(wpf:TextFieldAssist.OutlinedBorderActiveThickness)" RelativeSource="{RelativeSource TemplatedParent}" /> </MultiBinding> </Setter.Value> </Setter> </MultiTrigger> <!-- Display Shadow --> <Trigger Property="DropDownElevation" Value="Dp0"> <Setter TargetName="PopupCard" Property="Style" Value="{StaticResource MaterialDesignOutlinedCard}" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style x:Key="MaterialDesignAutoSuggestBox" TargetType="{x:Type wpf:AutoSuggestBox}" BasedOn="{StaticResource MaterialDesignAutoSuggestBoxBase}"> <Setter Property="Padding" Value="{x:Static wpf:Constants.TextBoxDefaultPadding}" /> <Setter Property="wpf:BehaviorsAssist.Behaviors"> <Setter.Value> <wpf:BehaviorCollection> <behaviors:TextBoxLineCountBehavior /> </wpf:BehaviorCollection> </Setter.Value> </Setter> </Style> <Style x:Key="MaterialDesignFloatingHintAutoSuggestBox" TargetType="{x:Type wpf:AutoSuggestBox}" BasedOn="{StaticResource MaterialDesignAutoSuggestBox}"> <Setter Property="wpf:HintAssist.IsFloating" Value="True" /> <Setter Property="Padding" Value="{x:Static wpf:Constants.FloatingTextBoxDefaultPadding}" /> </Style> <Style x:Key="MaterialDesignFilledAutoSuggestBox" TargetType="{x:Type wpf:AutoSuggestBox}" BasedOn="{StaticResource MaterialDesignFloatingHintAutoSuggestBox}"> <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.TextBox.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="MaterialDesignOutlinedAutoSuggestBox" TargetType="{x:Type wpf:AutoSuggestBox}" BasedOn="{StaticResource MaterialDesignFloatingHintAutoSuggestBox}"> <Setter Property="DropDownElevation" Value="Dp0" /> <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.TextBox.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> |