Skip to content

Commit c6599a2

Browse files
committed
Merge branch 'l1pton17-AnimateUnderline'
2 parents 4c97f24 + b4f1a2b commit c6599a2

8 files changed

+275
-162
lines changed

MaterialDesignThemes.Wpf/MaterialDesignThemes.Wpf.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,7 @@
253253
<Compile Include="ToolTipAssist.cs" />
254254
<Compile Include="RippleAssist.cs" />
255255
<Compile Include="Ripple.cs" />
256+
<Compile Include="Underline.cs" />
256257
<Compile Include="ValidationAssist.cs" />
257258
<EmbeddedResource Include="Properties\Resources.resx">
258259
<Generator>ResXFileCodeGenerator</Generator>

MaterialDesignThemes.Wpf/Themes/Generic.xaml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,60 @@
149149
</Setter.Value>
150150
</Setter>
151151
</Style>
152+
153+
<Style TargetType="{x:Type local:Underline}">
154+
<Setter Property="Background" Value="{DynamicResource PrimaryHueMidBrush}"/>
155+
<Setter Property="SnapsToDevicePixels" Value="True"/>
156+
<Setter Property="HorizontalAlignment" Value="Stretch"/>
157+
<Setter Property="VerticalAlignment" Value="Bottom"/>
158+
<Setter Property="Height" Value="2"/>
159+
<Setter Property="IsTabStop" Value="False"/>
160+
<Setter Property="Template">
161+
<Setter.Value>
162+
<ControlTemplate>
163+
<ControlTemplate.Resources>
164+
<CircleEase x:Key="UnderlineEasingFunction" EasingMode="EaseOut"/>
165+
<Storyboard x:Key="ExpandUnderlineBorderStoryboard">
166+
<DoubleAnimation Storyboard.TargetName="UnderlineBorder"
167+
Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)"
168+
Duration="0:0:0.3"
169+
EasingFunction="{StaticResource UnderlineEasingFunction}"
170+
To="1"/>
171+
</Storyboard>
172+
<Storyboard x:Key="CollapseUnderlineBorderStoryboard">
173+
<DoubleAnimation Storyboard.TargetName="UnderlineBorder"
174+
Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)"
175+
Duration="0:0:0.3"
176+
EasingFunction="{StaticResource UnderlineEasingFunction}"
177+
To="0"/>
178+
</Storyboard>
179+
</ControlTemplate.Resources>
180+
<Border x:Name="UnderlineBorder"
181+
Background="{TemplateBinding Background}"
182+
IsHitTestVisible="False"
183+
Height="{TemplateBinding Height}"
184+
VerticalAlignment="{TemplateBinding VerticalAlignment}"
185+
HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
186+
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
187+
RenderTransformOrigin="0.5,0.5">
188+
<Border.RenderTransform>
189+
<ScaleTransform ScaleX="0" ScaleY="1"/>
190+
</Border.RenderTransform>
191+
</Border>
192+
<ControlTemplate.Triggers>
193+
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsActive}" Value="True">
194+
<DataTrigger.EnterActions>
195+
<BeginStoryboard Storyboard="{StaticResource ExpandUnderlineBorderStoryboard}"/>
196+
</DataTrigger.EnterActions>
197+
<DataTrigger.ExitActions>
198+
<BeginStoryboard Storyboard="{StaticResource CollapseUnderlineBorderStoryboard}"/>
199+
</DataTrigger.ExitActions>
200+
</DataTrigger>
201+
</ControlTemplate.Triggers>
202+
</ControlTemplate>
203+
</Setter.Value>
204+
</Setter>
205+
</Style>
152206

153207
<Style TargetType="{x:Type local:MaterialDateDisplay}">
154208
<Setter Property="Background" Value="Transparent" />

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ComboBox.xaml

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -185,9 +185,7 @@
185185
Text="{TemplateBinding wpf:TextFieldAssist.Hint}"
186186
Visibility="{TemplateBinding Text, Converter={StaticResource TextFieldHintVisibilityConverter}}" />
187187
<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="false" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
188-
<Border BorderBrush="{DynamicResource PrimaryHueMidBrush}" BorderThickness="0 0 0 2"
189-
x:Name="focusBorder" Visibility="Hidden"
190-
Grid.ColumnSpan="2" />
188+
<wpf:Underline x:Name="Underline" Grid.ColumnSpan="2"/>
191189
</Grid>
192190
<ControlTemplate.Triggers>
193191
<Trigger Property="HasDropShadow" SourceName="PART_Popup" Value="true">
@@ -197,7 +195,7 @@
197195
<Setter Property="Height" TargetName="dropDownBorder" Value="95"/>
198196
</Trigger>
199197
<Trigger Property="IsKeyboardFocused" Value="True">
200-
<Setter TargetName="focusBorder" Property="Visibility" Value="Visible" />
198+
<Setter TargetName="Underline" Property="IsActive" Value="True"/>
201199
</Trigger>
202200
<MultiTrigger>
203201
<MultiTrigger.Conditions>
@@ -288,9 +286,7 @@
288286
IsHitTestVisible="False"
289287
Text="{TemplateBinding wpf:TextFieldAssist.Hint}" />
290288
<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="false" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
291-
<Border BorderBrush="{DynamicResource PrimaryHueMidBrush}" BorderThickness="0 0 0 2"
292-
x:Name="focusBorder" Visibility="Hidden"
293-
Grid.ColumnSpan="2" />
289+
<wpf:Underline x:Name="Underline" Grid.ColumnSpan="2"/>
294290
</Grid>
295291
</Grid>
296292
<ControlTemplate.Triggers>
@@ -316,7 +312,7 @@
316312
<Setter Property="Height" TargetName="dropDownBorder" Value="95"/>
317313
</Trigger>
318314
<Trigger Property="IsKeyboardFocused" Value="True">
319-
<Setter TargetName="focusBorder" Property="Visibility" Value="Visible" />
315+
<Setter TargetName="Underline" Property="IsActive" Value="True"/>
320316
</Trigger>
321317
<MultiTrigger>
322318
<MultiTrigger.Conditions>
@@ -386,11 +382,9 @@
386382
Visibility="{TemplateBinding Text, Converter={StaticResource TextFieldHintVisibilityConverter}}" />
387383
<TextBox x:Name="PART_EditableTextBox" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Margin="{TemplateBinding Padding}" Style="{StaticResource MaterialDesignComboBoxEditableTextBox}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
388384
</Grid>
389-
</Border>
390-
<Border BorderBrush="{DynamicResource PrimaryHueMidBrush}" BorderThickness="0 0 0 2"
391-
x:Name="focusBorder" Visibility="Hidden"
392-
Grid.ColumnSpan="2" />
393-
</Grid>
385+
</Border>
386+
<wpf:Underline x:Name="Underline" Grid.ColumnSpan="2" />
387+
</Grid>
394388
<ControlTemplate.Triggers>
395389
<Trigger Property="HasDropShadow" SourceName="PART_Popup" Value="true">
396390
<Setter Property="Margin" TargetName="dropDownBorder" Value="5,5,5,5"/>
@@ -402,7 +396,7 @@
402396
<Setter Property="Height" TargetName="dropDownBorder" Value="95"/>
403397
</Trigger>
404398
<Trigger Property="IsKeyboardFocused" Value="True" SourceName="PART_EditableTextBox">
405-
<Setter TargetName="focusBorder" Property="Visibility" Value="Visible" />
399+
<Setter TargetName="Underline" Property="IsActive" Value="True"/>
406400
</Trigger>
407401
<MultiTrigger>
408402
<MultiTrigger.Conditions>
@@ -492,12 +486,14 @@
492486
Opacity="{Binding Path=(wpf:TextFieldAssist.HintOpacity), RelativeSource={RelativeSource TemplatedParent}}"
493487
Text="{TemplateBinding wpf:TextFieldAssist.Hint}"
494488
IsHitTestVisible="False" />
495-
<TextBox x:Name="PART_EditableTextBox" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Margin="{TemplateBinding Padding}" Style="{StaticResource MaterialDesignComboBoxEditableTextBox}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
489+
<TextBox x:Name="PART_EditableTextBox"
490+
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
491+
IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Margin="{TemplateBinding Padding}"
492+
Style="{StaticResource MaterialDesignComboBoxEditableTextBox}"
493+
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
496494
</Grid>
497495
</Border>
498-
<Border BorderBrush="{DynamicResource PrimaryHueMidBrush}" BorderThickness="0 0 0 2"
499-
x:Name="focusBorder" Visibility="Hidden"
500-
Grid.ColumnSpan="2" />
496+
<wpf:Underline x:Name="Underline" Grid.ColumnSpan="2" />
501497
</Grid>
502498
<ControlTemplate.Triggers>
503499
<Trigger Property="wpf:TextFieldAssist.IsNullOrEmpty" Value="False">
@@ -525,7 +521,7 @@
525521
<Setter Property="Height" TargetName="dropDownBorder" Value="95"/>
526522
</Trigger>
527523
<Trigger Property="IsKeyboardFocused" Value="True" SourceName="PART_EditableTextBox">
528-
<Setter TargetName="focusBorder" Property="Visibility" Value="Visible" />
524+
<Setter TargetName="Underline" Property="IsActive" Value="True"/>
529525
</Trigger>
530526
<MultiTrigger>
531527
<MultiTrigger.Conditions>

0 commit comments

Comments
 (0)