Skip to content

Commit e356f5d

Browse files
TextBox: Respect externally set TextBox.Padding in triggers (#3074)
* Extract TextBox.Padding setters into style overrides instead of triggers * Fixing PasswordBox Also extended the SmartHint demo to be able to toggle the HintAssit.IsFloating on/off. * Fixing ComboBox * Fix MD3 demo app
1 parent 50a7885 commit e356f5d

File tree

8 files changed

+39
-16
lines changed

8 files changed

+39
-16
lines changed

MainDemo.Wpf/Domain/SmartHintViewModel.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ namespace MaterialDesignDemo.Domain;
44

55
internal class SmartHintViewModel : ViewModelBase
66
{
7+
private bool _floatHint = true;
78
private FloatingHintHorizontalAlignment _selectedAlignment = FloatingHintHorizontalAlignment.Inherit;
89
private double _selectedFloatingScale = 0.75;
910
private bool _showClearButton = true;
@@ -18,6 +19,16 @@ internal class SmartHintViewModel : ViewModelBase
1819

1920
public IEnumerable<string> ComboBoxOptions { get; } = new[] {"Option 1", "Option 2", "Option 3"};
2021

22+
public bool FloatHint
23+
{
24+
get => _floatHint;
25+
set
26+
{
27+
_floatHint = value;
28+
OnPropertyChanged();
29+
}
30+
}
31+
2132
public FloatingHintHorizontalAlignment SelectedAlignment
2233
{
2334
get => _selectedAlignment;

MainDemo.Wpf/MainWindow.xaml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,11 @@
6060
Width="200"
6161
Margin="16,4"
6262
materialDesign:HintAssist.Hint="Search"
63-
materialDesign:HintAssist.IsFloating="True"
6463
materialDesign:TextFieldAssist.DecorationVisibility="Collapsed"
6564
materialDesign:TextFieldAssist.HasClearButton="True"
66-
materialDesign:TextFieldAssist.HasOutlinedTextField="True"
67-
materialDesign:TextFieldAssist.TextFieldCornerRadius="4"
6865
DockPanel.Dock="Top"
69-
Text="{Binding SearchKeyword, UpdateSourceTrigger=PropertyChanged}" />
66+
Text="{Binding SearchKeyword, UpdateSourceTrigger=PropertyChanged}"
67+
Style="{StaticResource MaterialDesignOutlinedTextBox}"/>
7068

7169
<ListBox x:Name="DemoItemsListBox"
7270
Margin="0,16,0,16"

MainDemo.Wpf/SmartHint.xaml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@
4040

4141
<GroupBox Grid.Row="0" Margin="8,0,16,16" Header="Hint Settings" Style="{StaticResource MaterialDesignCardGroupBox}">
4242
<StackPanel Orientation="Horizontal" Margin="10">
43-
<TextBlock Text="FloatingHintHorizontalAlignment:" VerticalAlignment="Center" />
43+
<CheckBox Content="IsFloating" IsChecked="{Binding FloatHint}" />
44+
<TextBlock Text="Alignment:" VerticalAlignment="Center" Margin="20,0,0,0" />
4445
<ComboBox VerticalAlignment="Center" Margin="5,0,0,0" ItemsSource="{Binding HorizontalAlignmentOptions}" SelectedItem="{Binding SelectedAlignment, Mode=TwoWay}" />
4546
<TextBlock Text="FloatingScale:" VerticalAlignment="Center" Margin="20,0,0,0" />
4647
<ComboBox VerticalAlignment="Center" Margin="5,0,0,0" ItemsSource="{Binding FloatingScaleOptions}" SelectedItem="{Binding SelectedFloatingScale, Mode=TwoWay}" ItemStringFormat="F2" />
@@ -84,6 +85,7 @@
8485
<Setter Property="materialDesign:TextFieldAssist.HasClearButton" Value="{Binding ShowClearButton}" />
8586
<Setter Property="materialDesign:TextFieldAssist.HasLeadingIcon" Value="{Binding ShowLeadingIcon}" />
8687
<Setter Property="materialDesign:TextFieldAssist.LeadingIcon" Value="{StaticResource LeadingIcon}" />
88+
<Setter Property="materialDesign:HintAssist.IsFloating" Value="{Binding FloatHint}" />
8789
</Style>
8890
</Grid.Resources>
8991
<Grid.ColumnDefinitions>
@@ -114,6 +116,7 @@
114116
<Setter Property="materialDesign:TextFieldAssist.HasClearButton" Value="{Binding ShowClearButton}" />
115117
<Setter Property="materialDesign:TextFieldAssist.HasLeadingIcon" Value="{Binding ShowLeadingIcon}" />
116118
<Setter Property="materialDesign:TextFieldAssist.LeadingIcon" Value="{StaticResource LeadingIcon}" />
119+
<Setter Property="materialDesign:HintAssist.IsFloating" Value="{Binding FloatHint}" />
117120
</Style>
118121
</Grid.Resources>
119122
<Grid.ColumnDefinitions>
@@ -144,6 +147,7 @@
144147
<Setter Property="materialDesign:TextFieldAssist.HasClearButton" Value="{Binding ShowClearButton}" />
145148
<Setter Property="materialDesign:TextFieldAssist.HasLeadingIcon" Value="{Binding ShowLeadingIcon}" />
146149
<Setter Property="materialDesign:TextFieldAssist.LeadingIcon" Value="{StaticResource LeadingIcon}" />
150+
<Setter Property="materialDesign:HintAssist.IsFloating" Value="{Binding FloatHint}" />
147151
</Style>
148152
</Grid.Resources>
149153
<Grid.ColumnDefinitions>
@@ -176,6 +180,7 @@
176180
<Style TargetType="{x:Type RichTextBox}" BasedOn="{StaticResource MaterialDesignRichTextBox}">
177181
<Setter Property="materialDesign:TextFieldAssist.HasLeadingIcon" Value="{Binding ShowLeadingIcon}" />
178182
<Setter Property="materialDesign:TextFieldAssist.LeadingIcon" Value="{StaticResource LeadingIcon}" />
183+
<Setter Property="materialDesign:HintAssist.IsFloating" Value="{Binding FloatHint}" />
179184
</Style>
180185
</Grid.Resources>
181186
<Grid.ColumnDefinitions>
@@ -209,6 +214,7 @@
209214
<Setter Property="materialDesign:TextFieldAssist.HasClearButton" Value="{Binding ShowClearButton}" />
210215
<Setter Property="materialDesign:TextFieldAssist.HasLeadingIcon" Value="{Binding ShowLeadingIcon}" />
211216
<Setter Property="materialDesign:TextFieldAssist.LeadingIcon" Value="{StaticResource LeadingIcon}" />
217+
<Setter Property="materialDesign:HintAssist.IsFloating" Value="{Binding FloatHint}" />
212218
</Style>
213219
</Grid.Resources>
214220
<Grid.ColumnDefinitions>
@@ -239,6 +245,7 @@
239245
<Setter Property="materialDesign:TextFieldAssist.HasClearButton" Value="{Binding ShowClearButton}" />
240246
<Setter Property="materialDesign:TextFieldAssist.HasLeadingIcon" Value="{Binding ShowLeadingIcon}" />
241247
<Setter Property="materialDesign:TextFieldAssist.LeadingIcon" Value="{StaticResource LeadingIcon}" />
248+
<Setter Property="materialDesign:HintAssist.IsFloating" Value="{Binding FloatHint}" />
242249
</Style>
243250
</Grid.Resources>
244251
<Grid.ColumnDefinitions>
@@ -269,6 +276,7 @@
269276
<Setter Property="materialDesign:TextFieldAssist.HasClearButton" Value="{Binding ShowClearButton}" />
270277
<Setter Property="materialDesign:TextFieldAssist.HasLeadingIcon" Value="{Binding ShowLeadingIcon}" />
271278
<Setter Property="materialDesign:TextFieldAssist.LeadingIcon" Value="{StaticResource LeadingIcon}" />
279+
<Setter Property="materialDesign:HintAssist.IsFloating" Value="{Binding FloatHint}" />
272280
</Style>
273281
</Grid.Resources>
274282
<Grid.ColumnDefinitions>
@@ -302,6 +310,7 @@
302310
<Setter Property="materialDesign:TextFieldAssist.HasClearButton" Value="{Binding ShowClearButton}" />
303311
<Setter Property="materialDesign:TextFieldAssist.HasLeadingIcon" Value="{Binding ShowLeadingIcon}" />
304312
<Setter Property="materialDesign:TextFieldAssist.LeadingIcon" Value="{StaticResource LeadingIcon}" />
313+
<Setter Property="materialDesign:HintAssist.IsFloating" Value="{Binding FloatHint}" />
305314
</Style>
306315
</Grid.Resources>
307316
<Grid.ColumnDefinitions>
@@ -332,6 +341,7 @@
332341
<Setter Property="materialDesign:TextFieldAssist.HasClearButton" Value="{Binding ShowClearButton}" />
333342
<Setter Property="materialDesign:TextFieldAssist.HasLeadingIcon" Value="{Binding ShowLeadingIcon}" />
334343
<Setter Property="materialDesign:TextFieldAssist.LeadingIcon" Value="{StaticResource LeadingIcon}" />
344+
<Setter Property="materialDesign:HintAssist.IsFloating" Value="{Binding FloatHint}" />
335345
</Style>
336346
</Grid.Resources>
337347
<Grid.ColumnDefinitions>
@@ -362,6 +372,7 @@
362372
<Setter Property="materialDesign:TextFieldAssist.HasClearButton" Value="{Binding ShowClearButton}" />
363373
<Setter Property="materialDesign:TextFieldAssist.HasLeadingIcon" Value="{Binding ShowLeadingIcon}" />
364374
<Setter Property="materialDesign:TextFieldAssist.LeadingIcon" Value="{StaticResource LeadingIcon}" />
375+
<Setter Property="materialDesign:HintAssist.IsFloating" Value="{Binding FloatHint}" />
365376
</Style>
366377
</Grid.Resources>
367378
<Grid.ColumnDefinitions>
@@ -395,6 +406,7 @@
395406
<Setter Property="materialDesign:TextFieldAssist.HasClearButton" Value="{Binding ShowClearButton}" />
396407
<Setter Property="materialDesign:TextFieldAssist.HasLeadingIcon" Value="{Binding ShowLeadingIcon}" />
397408
<Setter Property="materialDesign:TextFieldAssist.LeadingIcon" Value="{StaticResource LeadingIcon}" />
409+
<Setter Property="materialDesign:HintAssist.IsFloating" Value="{Binding FloatHint}" />
398410
<Setter Property="ItemsSource" Value="{Binding ComboBoxOptions}" />
399411
<Setter Property="IsEditable" Value="True" />
400412
</Style>
@@ -427,6 +439,7 @@
427439
<Setter Property="materialDesign:TextFieldAssist.HasClearButton" Value="{Binding ShowClearButton}" />
428440
<Setter Property="materialDesign:TextFieldAssist.HasLeadingIcon" Value="{Binding ShowLeadingIcon}" />
429441
<Setter Property="materialDesign:TextFieldAssist.LeadingIcon" Value="{StaticResource LeadingIcon}" />
442+
<Setter Property="materialDesign:HintAssist.IsFloating" Value="{Binding FloatHint}" />
430443
<Setter Property="ItemsSource" Value="{Binding ComboBoxOptions}" />
431444
<Setter Property="IsEditable" Value="True" />
432445
</Style>
@@ -459,6 +472,7 @@
459472
<Setter Property="materialDesign:TextFieldAssist.HasClearButton" Value="{Binding ShowClearButton}" />
460473
<Setter Property="materialDesign:TextFieldAssist.HasLeadingIcon" Value="{Binding ShowLeadingIcon}" />
461474
<Setter Property="materialDesign:TextFieldAssist.LeadingIcon" Value="{StaticResource LeadingIcon}" />
475+
<Setter Property="materialDesign:HintAssist.IsFloating" Value="{Binding FloatHint}" />
462476
<Setter Property="ItemsSource" Value="{Binding ComboBoxOptions}" />
463477
<Setter Property="IsEditable" Value="True" />
464478
</Style>

MaterialDesign3.Demo.Wpf/MainWindow.xaml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,13 +109,12 @@
109109
<TextBox x:Name="DemoItemsSearchBox"
110110
Margin="16,4,16,4"
111111
materialDesign:HintAssist.Hint="Search"
112-
materialDesign:HintAssist.IsFloating="True"
113112
materialDesign:TextFieldAssist.DecorationVisibility="Collapsed"
114113
materialDesign:TextFieldAssist.HasClearButton="True"
115-
materialDesign:TextFieldAssist.HasOutlinedTextField="True"
116114
materialDesign:TextFieldAssist.TextFieldCornerRadius="8"
117115
DockPanel.Dock="Top"
118-
Text="{Binding SearchKeyword, UpdateSourceTrigger=PropertyChanged}" />
116+
Text="{Binding SearchKeyword, UpdateSourceTrigger=PropertyChanged}"
117+
Style="{StaticResource MaterialDesignOutlinedTextBox}"/>
119118
<ListBox x:Name="DemoItemsListBox"
120119
Margin="12,16,12,16"
121120
AutomationProperties.Name="DemoPagesListBox"

MaterialDesignThemes.Wpf/Constants.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ namespace MaterialDesignThemes.Wpf;
33
public static class Constants
44
{
55
public static readonly Thickness TextBoxDefaultPadding = new Thickness(0, 4, 0, 4);
6+
public static readonly Thickness FilledTextBoxDefaultPadding = new Thickness(16, 8, 12, 8);
7+
public static readonly Thickness OutlinedTextBoxDefaultPadding = new Thickness(16, 16, 12, 16);
68
public static readonly Thickness DefaultTextBoxViewMargin = new Thickness(1, 0, 1, 0);
79
public static readonly Thickness DefaultTextBoxViewMarginEmbedded = new Thickness(0);
810
public const double TextBoxNotEnabledOpacity = 0.56;

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ComboBox.xaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,6 @@
481481
</AdornerDecorator>
482482
<ControlTemplate.Triggers>
483483
<Trigger Property="wpf:TextFieldAssist.HasFilledTextField" Value="True">
484-
<Setter Property="Padding" Value="16,8,12,8" />
485484
<Setter TargetName="HelperTextWrapper" Property="Margin" Value="16,0,0,0" />
486485
</Trigger>
487486
<Trigger Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True">
@@ -880,7 +879,7 @@
880879
TargetType="{x:Type ComboBox}"
881880
BasedOn="{StaticResource MaterialDesignFloatingHintComboBox}">
882881
<Setter Property="Background" Value="{DynamicResource MaterialDesignTextFieldBoxBackground}" />
883-
<Setter Property="Padding" Value="12,8,8,8" />
882+
<Setter Property="Padding" Value="{x:Static wpf:Constants.FilledTextBoxDefaultPadding}" />
884883
<Setter Property="VerticalAlignment" Value="Stretch" />
885884
<Setter Property="VerticalContentAlignment" Value="Stretch" />
886885
<Setter Property="wpf:ComboBoxAssist.ShowSelectedItem" Value="True" />

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.PasswordBox.xaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -268,14 +268,12 @@
268268
</MultiTrigger>
269269
<Trigger Property="wpf:TextFieldAssist.HasFilledTextField" Value="True">
270270
<Setter Property="Background" Value="{DynamicResource MaterialDesignTextFieldBoxBackground}" />
271-
<Setter Property="Padding" Value="16,8,12,8" />
272271
<Setter TargetName="Hint" Property="wpf:TextFieldAssist.TextBoxViewMargin" Value="{x:Static wpf:Constants.DefaultTextBoxViewMarginEmbedded}" />
273272
<Setter TargetName="HelperTextTextBlock" Property="Margin" Value="16,0,0,0" />
274273
</Trigger>
275274
<Trigger Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True">
276275
<Setter Property="BorderBrush" Value="{DynamicResource MaterialDesignTextAreaBorder}" />
277276
<Setter Property="BorderThickness" Value="1" />
278-
<Setter Property="Padding" Value="16,16,12,16" />
279277
<Setter Property="VerticalContentAlignment" Value="Top" />
280278
<Setter TargetName="Hint" Property="wpf:TextFieldAssist.TextBoxViewMargin" Value="{x:Static wpf:Constants.DefaultTextBoxViewMarginEmbedded}" />
281279
<Setter TargetName="HelperTextTextBlock" Property="Margin" Value="16,0,0,0" />
@@ -469,13 +467,15 @@
469467
<Setter Property="wpf:TextFieldAssist.HasFilledTextField" Value="True" />
470468
<Setter Property="wpf:TextFieldAssist.TextFieldCornerRadius" Value="4,4,0,0" />
471469
<Setter Property="wpf:TextFieldAssist.UnderlineCornerRadius" Value="0" />
470+
<Setter Property="Padding" Value="{x:Static wpf:Constants.FilledTextBoxDefaultPadding}" />
472471
</Style>
473472

474473
<Style x:Key="MaterialDesignOutlinedPasswordBox"
475474
TargetType="{x:Type PasswordBox}"
476475
BasedOn="{StaticResource MaterialDesignFloatingHintPasswordBox}">
477476
<Setter Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" />
478477
<Setter Property="wpf:TextFieldAssist.TextFieldCornerRadius" Value="4" />
478+
<Setter Property="Padding" Value="{x:Static wpf:Constants.OutlinedTextBoxDefaultPadding}" />
479479
</Style>
480480

481481
<!-- ******************** "Reveal" PasswordBox styles below ***************************** -->
@@ -772,14 +772,12 @@
772772
</MultiTrigger>
773773
<Trigger Property="wpf:TextFieldAssist.HasFilledTextField" Value="True">
774774
<Setter Property="Background" Value="{DynamicResource MaterialDesignTextFieldBoxBackground}" />
775-
<Setter Property="Padding" Value="16,8,12,8" />
776775
<Setter TargetName="Hint" Property="wpf:TextFieldAssist.TextBoxViewMargin" Value="{x:Static wpf:Constants.DefaultTextBoxViewMarginEmbedded}" />
777776
<Setter TargetName="HelperTextTextBlock" Property="Margin" Value="16,0,0,0" />
778777
</Trigger>
779778
<Trigger Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True">
780779
<Setter Property="BorderBrush" Value="{DynamicResource MaterialDesignTextAreaBorder}" />
781780
<Setter Property="BorderThickness" Value="1" />
782-
<Setter Property="Padding" Value="16,16,12,16" />
783781
<Setter Property="VerticalContentAlignment" Value="Top" />
784782
<Setter TargetName="Hint" Property="wpf:TextFieldAssist.TextBoxViewMargin" Value="{x:Static wpf:Constants.DefaultTextBoxViewMarginEmbedded}" />
785783
<Setter TargetName="HelperTextTextBlock" Property="Margin" Value="16,0,0,0" />
@@ -986,13 +984,15 @@
986984
<Setter Property="wpf:TextFieldAssist.HasFilledTextField" Value="True" />
987985
<Setter Property="wpf:TextFieldAssist.TextFieldCornerRadius" Value="4,4,0,0" />
988986
<Setter Property="wpf:TextFieldAssist.UnderlineCornerRadius" Value="0" />
987+
<Setter Property="Padding" Value="{x:Static wpf:Constants.FilledTextBoxDefaultPadding}" />
989988
</Style>
990989

991990
<Style x:Key="MaterialDesignOutlinedRevealPasswordBox"
992991
TargetType="{x:Type PasswordBox}"
993992
BasedOn="{StaticResource MaterialDesignFloatingHintRevealPasswordBox}">
994993
<Setter Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" />
995994
<Setter Property="wpf:TextFieldAssist.TextFieldCornerRadius" Value="4" />
995+
<Setter Property="Padding" Value="{x:Static wpf:Constants.OutlinedTextBoxDefaultPadding}" />
996996
</Style>
997997

998998
</ResourceDictionary>

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.TextBox.xaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,14 +303,12 @@
303303
</MultiTrigger>
304304
<Trigger Property="wpf:TextFieldAssist.HasFilledTextField" Value="True">
305305
<Setter Property="Background" Value="{DynamicResource MaterialDesignTextFieldBoxBackground}" />
306-
<Setter Property="Padding" Value="16,8,12,8" />
307306
<Setter TargetName="Hint" Property="wpf:TextFieldAssist.TextBoxViewMargin" Value="{x:Static wpf:Constants.DefaultTextBoxViewMarginEmbedded}" />
308307
<Setter TargetName="HelperTextTextBlock" Property="Margin" Value="16,0,0,0" />
309308
</Trigger>
310309
<Trigger Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True">
311310
<Setter Property="BorderBrush" Value="{DynamicResource MaterialDesignTextAreaBorder}" />
312311
<Setter Property="BorderThickness" Value="1" />
313-
<Setter Property="Padding" Value="16,16,12,16" />
314312
<Setter TargetName="Hint" Property="wpf:TextFieldAssist.TextBoxViewMargin" Value="{x:Static wpf:Constants.DefaultTextBoxViewMarginEmbedded}" />
315313
<Setter TargetName="HelperTextTextBlock" Property="Margin" Value="16,0,0,0" />
316314
<Setter TargetName="Hint" Property="FloatingOffset">
@@ -512,13 +510,15 @@
512510
<Setter Property="wpf:TextFieldAssist.HasFilledTextField" Value="True" />
513511
<Setter Property="wpf:TextFieldAssist.TextFieldCornerRadius" Value="4,4,0,0" />
514512
<Setter Property="wpf:TextFieldAssist.UnderlineCornerRadius" Value="0" />
513+
<Setter Property="Padding" Value="{x:Static wpf:Constants.FilledTextBoxDefaultPadding}" />
515514
</Style>
516515

517516
<Style x:Key="MaterialDesignOutlinedTextBox"
518517
TargetType="{x:Type TextBox}"
519518
BasedOn="{StaticResource MaterialDesignFloatingHintTextBox}">
520519
<Setter Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" />
521520
<Setter Property="wpf:TextFieldAssist.TextFieldCornerRadius" Value="4" />
521+
<Setter Property="Padding" Value="{x:Static wpf:Constants.OutlinedTextBoxDefaultPadding}" />
522522
</Style>
523523

524524
</ResourceDictionary>

0 commit comments

Comments
 (0)