Skip to content

Commit 1bb1508

Browse files
Streissipunker76
authored andcommitted
Password field box #973 (#984)
* added style for passwordFieldBox, added demo passwordFieldBox in demo application * style the xaml
1 parent c0e963a commit 1bb1508

File tree

2 files changed

+128
-31
lines changed

2 files changed

+128
-31
lines changed

MainDemo.Wpf/TextFields.xaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@
6868
<RowDefinition Height="Auto" />
6969
<RowDefinition Height="Auto" />
7070
<RowDefinition Height="Auto" />
71+
<RowDefinition Height="Auto" />
72+
<RowDefinition Height="Auto" />
7173
</Grid.RowDefinitions>
7274
<TextBlock Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Style="{StaticResource MaterialDesignHeadlineTextBlock}">Common Fields</TextBlock>
7375
<materialDesign:PackIcon Grid.Row="1" Grid.Column="0" Kind="Account" Foreground="{Binding ElementName=NameTextBox, Path=BorderBrush}" />
@@ -369,5 +371,17 @@
369371
IsEnabled="{Binding Path=IsChecked, ElementName=MaterialDesignTextAreaTextBoxEnabledComboBox}" />
370372
</StackPanel>
371373
</smtx:XamlDisplay>
374+
375+
<TextBlock Grid.Row="16" Grid.Column="1" Grid.ColumnSpan="3" Style="{StaticResource MaterialDesignHeadlineTextBlock}" Margin="0,32,0,16">Password field box</TextBlock>
376+
<smtx:XamlDisplay Key="fields_27" Grid.Row="17" Grid.Column="1" Grid.RowSpan="2" Grid.ColumnSpan="3">
377+
<StackPanel>
378+
<CheckBox x:Name="MaterialDesignPasswordFieldBoxPasswordBoxEnabledComboBox"
379+
IsChecked="True" Margin="0,0,0,8">Enabled</CheckBox>
380+
<PasswordBox Style="{StaticResource MaterialDesignPasswordFieldBoxPasswordBox}"
381+
VerticalAlignment="Top"
382+
IsEnabled="{Binding Path=IsChecked, ElementName=MaterialDesignPasswordFieldBoxPasswordBoxEnabledComboBox}"
383+
materialDesign:HintAssist.Hint="Floating hint in a password box" />
384+
</StackPanel>
385+
</smtx:XamlDisplay>
372386
</Grid>
373387
</UserControl>

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.PasswordBox.xaml

Lines changed: 114 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -50,39 +50,43 @@
5050
<Setter Property="Template">
5151
<Setter.Value>
5252
<ControlTemplate TargetType="{x:Type PasswordBox}">
53-
<Grid>
54-
<Border x:Name="border"
55-
BorderBrush="{TemplateBinding BorderBrush}"
56-
BorderThickness="{TemplateBinding BorderThickness}"
57-
Background="{TemplateBinding Background}"
58-
SnapsToDevicePixels="True"
59-
Padding="0 4 0 4">
60-
<Grid Margin="{TemplateBinding Padding}"
61-
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
62-
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}">
63-
<ScrollViewer x:Name="PART_ContentHost" Focusable="false"
64-
HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"
65-
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
66-
UseLayoutRounding="{TemplateBinding UseLayoutRounding}"
67-
/>
68-
<wpf:SmartHint x:Name="Hint"
69-
Hint="{Binding Path=(wpf:HintAssist.Hint), RelativeSource={RelativeSource TemplatedParent}}"
70-
HintProxy="{Binding RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static converters:HintProxyFabricConverter.Instance}}"
71-
HintOpacity="{Binding Path=(wpf:HintAssist.HintOpacity), RelativeSource={RelativeSource TemplatedParent}}"
72-
UseFloating="{Binding Path=(wpf:HintAssist.IsFloating), RelativeSource={RelativeSource TemplatedParent}}"
73-
FloatingScale="{Binding Path=(wpf:HintAssist.FloatingScale), RelativeSource={RelativeSource TemplatedParent}}"
74-
FloatingOffset="{Binding Path=(wpf:HintAssist.FloatingOffset), RelativeSource={RelativeSource TemplatedParent}}"
75-
FontSize="{TemplateBinding FontSize}"
76-
Padding="{TemplateBinding Padding}"
77-
/>
78-
</Grid>
79-
</Border>
80-
<Line x:Name="DashedLine" VerticalAlignment="Bottom" Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Converter={StaticResource InverseBoolToVisConverter}}"
53+
<Border x:Name="passwordFieldBoxBorder"
54+
SnapsToDevicePixels="True">
55+
<Grid>
56+
<Border x:Name="border"
57+
BorderBrush="{TemplateBinding BorderBrush}"
58+
BorderThickness="{TemplateBinding BorderThickness}"
59+
Background="{TemplateBinding Background}"
60+
SnapsToDevicePixels="True"
61+
Padding="0 4 0 4">
62+
<Grid x:Name="passwordFieldGrid"
63+
Margin="{TemplateBinding Padding}"
64+
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
65+
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}">
66+
<ScrollViewer x:Name="PART_ContentHost" Focusable="false"
67+
HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"
68+
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
69+
UseLayoutRounding="{TemplateBinding UseLayoutRounding}"
70+
/>
71+
<wpf:SmartHint x:Name="Hint"
72+
Hint="{Binding Path=(wpf:HintAssist.Hint), RelativeSource={RelativeSource TemplatedParent}}"
73+
HintProxy="{Binding RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static converters:HintProxyFabricConverter.Instance}}"
74+
HintOpacity="{Binding Path=(wpf:HintAssist.HintOpacity), RelativeSource={RelativeSource TemplatedParent}}"
75+
UseFloating="{Binding Path=(wpf:HintAssist.IsFloating), RelativeSource={RelativeSource TemplatedParent}}"
76+
FloatingScale="{Binding Path=(wpf:HintAssist.FloatingScale), RelativeSource={RelativeSource TemplatedParent}}"
77+
FloatingOffset="{Binding Path=(wpf:HintAssist.FloatingOffset), RelativeSource={RelativeSource TemplatedParent}}"
78+
FontSize="{TemplateBinding FontSize}"
79+
Padding="{TemplateBinding Padding}"
80+
/>
81+
</Grid>
82+
</Border>
83+
<Line x:Name="DashedLine" VerticalAlignment="Bottom" Visibility="Hidden"
8184
StrokeThickness="1.25" StrokeDashArray="1,2.5" StrokeDashCap="Round"
8285
X1="0" X2="{Binding ActualWidth, ElementName=border}" Y1="0" Y2="0"
8386
Stroke="{TemplateBinding BorderBrush}" Opacity="0.56" />
84-
<wpf:Underline x:Name="Underline" Visibility="{Binding Path=(wpf:TextFieldAssist.DecorationVisibility), RelativeSource={RelativeSource TemplatedParent}}"/>
85-
</Grid>
87+
<wpf:Underline x:Name="Underline" Visibility="{Binding Path=(wpf:TextFieldAssist.DecorationVisibility), RelativeSource={RelativeSource TemplatedParent}}"/>
88+
</Grid>
89+
</Border>
8690
<ControlTemplate.Triggers>
8791
<MultiTrigger>
8892
<MultiTrigger.Conditions>
@@ -109,6 +113,81 @@
109113
<Setter Property="BorderBrush" Value="{DynamicResource ValidationErrorBrush}"/>
110114
<Setter TargetName="Underline" Property="Background" Value="{DynamicResource ValidationErrorBrush}"/>
111115
</Trigger>
116+
<Trigger Property="wpf:TextFieldAssist.HasTextFieldBox" Value="True">
117+
<Setter Property="VerticalContentAlignment" Value="Top" />
118+
<Setter TargetName="passwordFieldBoxBorder" Property="Background" Value="{DynamicResource MaterialDesignTextFieldBoxBackground}" />
119+
<Setter TargetName="passwordFieldBoxBorder" Property="CornerRadius" Value="4" />
120+
<Setter TargetName="passwordFieldBoxBorder" Property="Padding" Value="0,8,0,0" />
121+
<Setter TargetName="passwordFieldGrid" Property="Margin" Value="16,0,16,0" />
122+
<Setter TargetName="border" Property="BorderThickness" Value="0" />
123+
<Setter TargetName="Underline" Property="CornerRadius" Value="0,0,4,4" />
124+
<Setter TargetName="Hint" Property="Margin" Value="0,0,0,16" />
125+
<Setter TargetName="PART_ContentHost" Property="Margin" Value="0,8,0,8" />
126+
</Trigger>
127+
<Trigger Property="wpf:TextFieldAssist.HasTextAreaBox" Value="True">
128+
<Setter Property="VerticalContentAlignment" Value="Top" />
129+
<Setter TargetName="passwordFieldBoxBorder" Property="Background" Value="Transparent" />
130+
<Setter TargetName="passwordFieldBoxBorder" Property="CornerRadius" Value="4" />
131+
<Setter TargetName="passwordFieldBoxBorder" Property="BorderThickness" Value="1" />
132+
<Setter TargetName="passwordFieldBoxBorder" Property="BorderBrush" Value="{DynamicResource MaterialDesignTextAreaBorder}" />
133+
<Setter TargetName="passwordFieldBoxBorder" Property="Padding" Value="0,8,0,0" />
134+
<Setter TargetName="passwordFieldBoxBorder" Property="Margin" Value="-1" />
135+
<Setter TargetName="passwordFieldGrid" Property="Margin" Value="16,0,16,0" />
136+
<Setter TargetName="border" Property="BorderThickness" Value="0" />
137+
<Setter TargetName="Underline" Property="Visibility" Value="Collapsed" />
138+
<Setter TargetName="Hint" Property="Margin" Value="0,0,0,16" />
139+
<Setter TargetName="PART_ContentHost" Property="Margin" Value="0,8,0,8" />
140+
</Trigger>
141+
<MultiTrigger>
142+
<MultiTrigger.Conditions>
143+
<Condition Property="IsEnabled" Value="false" />
144+
<Condition Property="wpf:TextFieldAssist.HasTextAreaBox" Value="True" />
145+
</MultiTrigger.Conditions>
146+
<Setter TargetName="passwordFieldBoxBorder" Property="Background" Value="{DynamicResource MaterialDesignTextFieldBoxDisabledBackground}" />
147+
<Setter TargetName="passwordFieldBoxBorder" Property="BorderBrush" Value="{DynamicResource MaterialDesignTextAreaInactiveBorder}" />
148+
</MultiTrigger>
149+
<MultiTrigger>
150+
<MultiTrigger.Conditions>
151+
<Condition Property="IsEnabled" Value="false" />
152+
<Condition Property="wpf:TextFieldAssist.HasTextAreaBox" Value="False" />
153+
</MultiTrigger.Conditions>
154+
<Setter Property="Opacity" TargetName="border" Value="0.42"/>
155+
<Setter TargetName="border" Property="BorderBrush" Value="Transparent" />
156+
</MultiTrigger>
157+
<MultiTrigger>
158+
<MultiTrigger.Conditions>
159+
<Condition Property="IsEnabled" Value="false" />
160+
<Condition Property="wpf:TextFieldAssist.HasTextAreaBox" Value="False" />
161+
<Condition Property="wpf:TextFieldAssist.HasTextFieldBox" Value="False" />
162+
</MultiTrigger.Conditions>
163+
<Setter TargetName="DashedLine" Property="Visibility" Value="Visible" />
164+
</MultiTrigger>
165+
<MultiTrigger>
166+
<MultiTrigger.Conditions>
167+
<Condition Property="IsMouseOver" Value="True" />
168+
<Condition Property="wpf:TextFieldAssist.HasTextAreaBox" Value="True" />
169+
</MultiTrigger.Conditions>
170+
<Setter TargetName="passwordFieldBoxBorder" Property="Margin" Value="-2" />
171+
<Setter TargetName="passwordFieldBoxBorder" Property="BorderThickness" Value="2" />
172+
</MultiTrigger>
173+
<MultiTrigger>
174+
<MultiTrigger.Conditions>
175+
<Condition Property="IsKeyboardFocused" Value="True" />
176+
<Condition Property="wpf:TextFieldAssist.HasTextAreaBox" Value="True" />
177+
</MultiTrigger.Conditions>
178+
<Setter TargetName="passwordFieldBoxBorder" Property="Margin" Value="-2" />
179+
<Setter TargetName="passwordFieldBoxBorder" Property="BorderThickness" Value="2" />
180+
<Setter TargetName="passwordFieldBoxBorder" Property="BorderBrush" Value="{DynamicResource PrimaryHueMidBrush}" />
181+
</MultiTrigger>
182+
<MultiTrigger>
183+
<MultiTrigger.Conditions>
184+
<Condition Property="Validation.HasError" Value="True" />
185+
<Condition Property="wpf:TextFieldAssist.HasTextAreaBox" Value="True" />
186+
</MultiTrigger.Conditions>
187+
<Setter TargetName="passwordFieldBoxBorder" Property="Margin" Value="-2" />
188+
<Setter TargetName="passwordFieldBoxBorder" Property="BorderThickness" Value="2" />
189+
<Setter TargetName="passwordFieldBoxBorder" Property="BorderBrush" Value="{DynamicResource ValidationErrorBrush}" />
190+
</MultiTrigger>
112191
</ControlTemplate.Triggers>
113192
</ControlTemplate>
114193
</Setter.Value>
@@ -128,4 +207,8 @@
128207
<Setter Property="wpf:HintAssist.IsFloating" Value="True"/>
129208
</Style>
130209

131-
</ResourceDictionary>
210+
<Style x:Key="MaterialDesignPasswordFieldBoxPasswordBox" TargetType="{x:Type PasswordBox}" BasedOn="{StaticResource MaterialDesignFloatingHintPasswordBox}">
211+
<Setter Property="wpf:TextFieldAssist.HasTextFieldBox" Value="True" />
212+
</Style>
213+
214+
</ResourceDictionary>

0 commit comments

Comments
 (0)