Skip to content

Commit 504be7b

Browse files
committed
Update Text/Password/ComboBox disabled style to better adhere to the material design specification and resolve #811
1 parent 3abf01a commit 504be7b

File tree

4 files changed

+65
-17
lines changed

4 files changed

+65
-17
lines changed

MainDemo.Wpf/TextFields.xaml

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,13 @@
4040
</ResourceDictionary>
4141
</UserControl.Resources>
4242
<codeDisplayer:XamlDisplayerPanel HorizontalAlignment="Center">
43+
44+
<CheckBox Grid.Row="0" Grid.Column="3" x:Name="EnabledCheckBox" IsThreeState="False" IsChecked="True" Margin="0 8 0 0" Content="Enabled"
45+
codeDisplayer:XamlDisplayer.DisplayCode="False"/>
46+
4347
<TextBox x:Name="NameTextBox"
44-
materialDesign:HintAssist.Hint="Name">
48+
materialDesign:HintAssist.Hint="Name"
49+
IsEnabled="{Binding ElementName=EnabledCheckBox, Path=IsChecked}">
4550
<TextBox.Text>
4651
<Binding Path="Name" UpdateSourceTrigger="PropertyChanged">
4752
<Binding.ValidationRules>
@@ -52,7 +57,8 @@
5257
</TextBox>
5358
<StackPanel Orientation="Horizontal">
5459
<TextBlock VerticalAlignment="Center" Margin="0 0 8 0">OS</TextBlock>
55-
<ComboBox materialDesign:HintAssist.Hint="OS">
60+
<ComboBox materialDesign:HintAssist.Hint="OS"
61+
IsEnabled="{Binding ElementName=EnabledCheckBox, Path=IsChecked}">
5662
<ComboBoxItem>Android</ComboBoxItem>
5763
<ComboBoxItem>iOS</ComboBoxItem>
5864
<ComboBoxItem>Linux</ComboBoxItem>
@@ -78,7 +84,8 @@
7884
<StackPanel Orientation="Horizontal">
7985
<TextBlock VerticalAlignment="Center" Margin="0 0 8 0" >Fruit</TextBlock>
8086
<ComboBox materialDesign:HintAssist.Hint="Search"
81-
IsEditable="True" materialDesign:HintAssist.HintOpacity=".26">
87+
IsEditable="True" materialDesign:HintAssist.HintOpacity=".26"
88+
IsEnabled="{Binding ElementName=EnabledCheckBox, Path=IsChecked}">
8289
<ComboBoxItem>Apple</ComboBoxItem>
8390
<ComboBoxItem>Banana</ComboBoxItem>
8491
<ComboBoxItem>Pear</ComboBoxItem>
@@ -87,17 +94,21 @@
8794
</StackPanel>
8895
<TextBox
8996
x:Name="CommentTextBox"
90-
materialDesign:HintAssist.Hint="Comment"
97+
materialDesign:HintAssist.Hint="Comment"
98+
IsEnabled="{Binding ElementName=EnabledCheckBox, Path=IsChecked}"
9199
/>
92100
<StackPanel Orientation="Horizontal">
93101
<materialDesign:PackIcon Margin="0 0 8 0" Kind="Key" Foreground="{Binding ElementName=PasswordBox, Path=BorderBrush}" HorizontalAlignment="Right" />
94102
<PasswordBox
95103
x:Name="PasswordBox"
96-
materialDesign:HintAssist.Hint="Password" />
104+
materialDesign:HintAssist.Hint="Password"
105+
IsEnabled="{Binding ElementName=EnabledCheckBox, Path=IsChecked}"/>
97106
</StackPanel>
98107
<TextBox materialDesign:HintAssist.Hint="Floating Hint"
99-
Style="{StaticResource MaterialDesignFloatingHintTextBox}" />
100-
<ComboBox materialDesign:HintAssist.Hint="OS" Style="{StaticResource MaterialDesignFloatingHintComboBox}">
108+
Style="{StaticResource MaterialDesignFloatingHintTextBox}"
109+
IsEnabled="{Binding ElementName=EnabledCheckBox, Path=IsChecked}"/>
110+
<ComboBox materialDesign:HintAssist.Hint="OS" Style="{StaticResource MaterialDesignFloatingHintComboBox}"
111+
IsEnabled="{Binding ElementName=EnabledCheckBox, Path=IsChecked}">
101112
<ComboBoxItem>Android</ComboBoxItem>
102113
<ComboBoxItem>iOS</ComboBoxItem>
103114
<ComboBoxItem>Linux</ComboBoxItem>

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ComboBox.xaml

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
<converters:TextFieldHintVisibilityConverter x:Key="TextFieldHintVisibilityConverter" IsNotEmptyValue="Collapsed" />
1414
<converters:MathConverter x:Key="MathAddConverter" Operation="Add" />
1515
<converters:BrushRoundConverter x:Key="BrushRoundConverter" />
16-
16+
<converters:BooleanToVisibilityConverter x:Key="InverseBoolToVisConverter" TrueValue="Collapsed" FalseValue="Visible"/>
17+
1718
<system:Double x:Key="PopupContentPresenterExtend">4</system:Double>
1819
<system:Double x:Key="PopupTopBottomMargin">8</system:Double>
1920
<system:Double x:Key="PopupLeftRightMargin">16</system:Double>
@@ -377,14 +378,14 @@
377378
<Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false" />
378379
<Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false" />
379380
</MultiDataTrigger.Conditions>
380-
<Setter TargetName="ToggleTemplateRoot" Property="BorderBrush" Value="{DynamicResource MaterialDesignCheckBoxDisabled}" />
381+
<Setter TargetName="ToggleTemplateRoot" Property="BorderBrush" Value="Transparent"/>
381382
</MultiDataTrigger>
382383
<MultiDataTrigger>
383384
<MultiDataTrigger.Conditions>
384385
<Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false" />
385386
<Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true" />
386387
</MultiDataTrigger.Conditions>
387-
<Setter TargetName="ToggleTemplateRoot" Property="BorderBrush" Value="{DynamicResource MaterialDesignCheckBoxDisabled}" />
388+
<Setter TargetName="ToggleTemplateRoot" Property="BorderBrush" Value="Transparent"/>
388389
<Setter TargetName="splitBorder" Property="BorderBrush" Value="{DynamicResource MaterialDesignCheckBoxDisabled}" />
389390
</MultiDataTrigger>
390391
</ControlTemplate.Triggers>
@@ -440,6 +441,11 @@
440441
Hint="{TemplateBinding wpf:HintAssist.Hint}" />
441442
</Grid>
442443
</Grid>
444+
<Line x:Name="DashedLine" Grid.ColumnSpan="2" VerticalAlignment="Bottom"
445+
Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Converter={StaticResource InverseBoolToVisConverter}}"
446+
StrokeThickness="1.25" StrokeDashArray="1,2.5" StrokeDashCap="Round"
447+
X1="0" X2="{Binding ActualWidth, ElementName=toggleButton}" Y1="0" Y2="0"
448+
Stroke="{TemplateBinding BorderBrush}" Opacity="0.56" />
443449
<wpf:Underline x:Name="Underline"
444450
Grid.ColumnSpan="2"
445451
IsActive="{Binding ElementName=PART_EditableTextBox, Path=IsKeyboardFocused}"
@@ -481,6 +487,7 @@
481487
</Trigger>
482488
<Trigger Property="IsEnabled" Value="False">
483489
<Setter TargetName="templateRoot" Property="Opacity" Value="0.56"/>
490+
<Setter TargetName="toggleButton" Property="BorderBrush" Value="Transparent"/>
484491
</Trigger>
485492
<Trigger Property="IsEditable" Value="True">
486493
<Setter TargetName="PART_EditableTextBox" Property="Visibility" Value="Visible" />
@@ -600,4 +607,4 @@
600607
<Setter Property="wpf:HintAssist.IsFloating" Value="True"/>
601608
</Style>
602609

603-
</ResourceDictionary>
610+
</ResourceDictionary>

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.PasswordBox.xaml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
<ResourceDictionary Source="MaterialDesignTheme.ValidationErrorTemplate.xaml" />
88
</ResourceDictionary.MergedDictionaries>
99

10+
<converters:BooleanToVisibilityConverter x:Key="InverseBoolToVisConverter" TrueValue="Collapsed" FalseValue="Visible"/>
11+
1012
<Style x:Key="MaterialDesignPasswordBox" TargetType="{x:Type PasswordBox}">
1113
<Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.Foreground)}"/>
1214
<Setter Property="FontFamily" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.FontFamily)}"/>
@@ -54,6 +56,10 @@
5456
/>
5557
</Grid>
5658
</Border>
59+
<Line x:Name="DashedLine" VerticalAlignment="Bottom" Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Converter={StaticResource InverseBoolToVisConverter}}"
60+
StrokeThickness="1.25" StrokeDashArray="1,2.5" StrokeDashCap="Round"
61+
X1="0" X2="{Binding ActualWidth, ElementName=border}" Y1="0" Y2="0"
62+
Stroke="{TemplateBinding BorderBrush}" Opacity="0.56" />
5763
<wpf:Underline x:Name="Underline" Visibility="{Binding Path=(wpf:TextFieldAssist.DecorationVisibility), RelativeSource={RelativeSource TemplatedParent}}"/>
5864
</Grid>
5965
<ControlTemplate.Triggers>
@@ -69,7 +75,8 @@
6975
<Setter TargetName="border" Property="Padding" Value="0 15.5 0 4" />
7076
</Trigger>
7177
<Trigger Property="IsEnabled" Value="false">
72-
<Setter Property="Opacity" TargetName="border" Value="0.56"/>
78+
<Setter Property="Opacity" TargetName="border" Value="0.42"/>
79+
<Setter TargetName="border" Property="BorderBrush" Value="Transparent" />
7380
</Trigger>
7481
<Trigger Property="IsMouseOver" Value="true">
7582
<Setter Property="BorderBrush" Value="{DynamicResource PrimaryHueMidBrush}"/>

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.TextBox.xaml

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<ResourceDictionary.MergedDictionaries>
77
<ResourceDictionary Source="MaterialDesignTheme.ValidationErrorTemplate.xaml" />
88
</ResourceDictionary.MergedDictionaries>
9-
9+
1010
<converters:TextFieldHintVisibilityConverter x:Key="TextFieldHintVisibilityConverter" />
1111

1212
<Style x:Key="MaterialDesignTextBox" TargetType="{x:Type TextBox}">
@@ -80,6 +80,10 @@
8080
/>
8181
</Grid>
8282
</Border>
83+
<Line x:Name="DashedLine" VerticalAlignment="Bottom" Visibility="Hidden"
84+
StrokeThickness="1.25" StrokeDashArray="1,2.5" StrokeDashCap="Round"
85+
X1="0" X2="{Binding ActualWidth, ElementName=border}" Y1="0" Y2="0"
86+
Stroke="{TemplateBinding BorderBrush}" Opacity="0.56" />
8387
<wpf:Underline x:Name="Underline" Visibility="{Binding Path=(wpf:TextFieldAssist.DecorationVisibility), RelativeSource={RelativeSource TemplatedParent}}"/>
8488
</Grid>
8589
</Border>
@@ -120,11 +124,30 @@
120124
<Setter TargetName="Hint" Property="Margin" Value="0,0,0,16" />
121125
<Setter TargetName="PART_ContentHost" Property="Margin" Value="0,8,0,8" />
122126
</Trigger>
123-
<Trigger Property="IsEnabled" Value="false">
124-
<Setter Property="Opacity" TargetName="border" Value="0.56"/>
127+
<MultiTrigger>
128+
<MultiTrigger.Conditions>
129+
<Condition Property="IsEnabled" Value="false" />
130+
<Condition Property="wpf:TextFieldAssist.HasTextAreaBox" Value="True" />
131+
</MultiTrigger.Conditions>
125132
<Setter TargetName="textFieldBoxBorder" Property="Background" Value="{DynamicResource MaterialDesignTextFieldBoxDisabledBackground}" />
126133
<Setter TargetName="textFieldBoxBorder" Property="BorderBrush" Value="{DynamicResource MaterialDesignTextAreaInactiveBorder}" />
127-
</Trigger>
134+
</MultiTrigger>
135+
<MultiTrigger>
136+
<MultiTrigger.Conditions>
137+
<Condition Property="IsEnabled" Value="false" />
138+
<Condition Property="wpf:TextFieldAssist.HasTextAreaBox" Value="False" />
139+
</MultiTrigger.Conditions>
140+
<Setter Property="Opacity" TargetName="border" Value="0.42"/>
141+
<Setter TargetName="border" Property="BorderBrush" Value="Transparent" />
142+
</MultiTrigger>
143+
<MultiTrigger>
144+
<MultiTrigger.Conditions>
145+
<Condition Property="IsEnabled" Value="false" />
146+
<Condition Property="wpf:TextFieldAssist.HasTextAreaBox" Value="False" />
147+
<Condition Property="wpf:TextFieldAssist.HasTextFieldBox" Value="False" />
148+
</MultiTrigger.Conditions>
149+
<Setter TargetName="DashedLine" Property="Visibility" Value="Visible" />
150+
</MultiTrigger>
128151
<Trigger Property="IsMouseOver" Value="true">
129152
<Setter Property="BorderBrush" Value="{DynamicResource PrimaryHueMidBrush}"/>
130153
</Trigger>
@@ -188,4 +211,4 @@
188211
<Setter Property="wpf:TextFieldAssist.HasTextAreaBox" Value="True" />
189212
</Style>
190213

191-
</ResourceDictionary>
214+
</ResourceDictionary>

0 commit comments

Comments
 (0)