Skip to content

Commit 8de7db7

Browse files
nicolaihenriksenKeboo
authored andcommitted
Fix hint positioning issue when "readonly" element
The issue was present for all controls once they are in "readonly" state. Special handling of the case where the element is readonly, and the hint should follow the prefix/suffix needed to be added because of the "business rule" that prefix/suffix is always visible when the element is "readonly".
1 parent 9de4ffc commit 8de7db7

File tree

5 files changed

+15
-3
lines changed

5 files changed

+15
-3
lines changed

src/MaterialDesignThemes.Wpf/Converters/FloatingHintInitialHorizontalOffsetConverter.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ public class FloatingHintInitialHorizontalOffsetConverter : IMultiValueConverter
1919
PrefixSuffixVisibility suffixVisibility,
2020
PrefixSuffixHintBehavior prefixHintBehavior,
2121
PrefixSuffixHintBehavior suffixHintBehavior,
22-
HorizontalAlignment horizontalContentAlignment
22+
HorizontalAlignment horizontalContentAlignment,
23+
bool isEditable,
2324
])
2425
{
2526
return 0;
@@ -37,8 +38,11 @@ double GetLeftOffset()
3738
return prefixVisibility switch
3839
{
3940
PrefixSuffixVisibility.WhenFocusedOrNonEmpty
40-
when prefixHintBehavior == PrefixSuffixHintBehavior.AlignWithText =>
41+
when prefixHintBehavior == PrefixSuffixHintBehavior.AlignWithText && isEditable =>
4142
prefixWidth + prefixMargin.Right,
43+
PrefixSuffixVisibility.WhenFocusedOrNonEmpty
44+
when prefixHintBehavior == PrefixSuffixHintBehavior.AlignWithPrefixSuffix && !isEditable =>
45+
-(prefixWidth + prefixMargin.Right),
4246
PrefixSuffixVisibility.Always
4347
when prefixHintBehavior == PrefixSuffixHintBehavior.AlignWithPrefixSuffix =>
4448
-(prefixWidth + prefixMargin.Right),
@@ -51,8 +55,11 @@ double GetRightOffset()
5155
return suffixVisibility switch
5256
{
5357
PrefixSuffixVisibility.WhenFocusedOrNonEmpty
54-
when suffixHintBehavior == PrefixSuffixHintBehavior.AlignWithText =>
58+
when suffixHintBehavior == PrefixSuffixHintBehavior.AlignWithText && isEditable =>
5559
-(suffixWidth + suffixMargin.Left),
60+
PrefixSuffixVisibility.WhenFocusedOrNonEmpty
61+
when suffixHintBehavior == PrefixSuffixHintBehavior.AlignWithPrefixSuffix && !isEditable =>
62+
suffixWidth + suffixMargin.Left,
5663
PrefixSuffixVisibility.Always
5764
when suffixHintBehavior == PrefixSuffixHintBehavior.AlignWithPrefixSuffix =>
5865
suffixWidth + suffixMargin.Left,

src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.AutoSuggestBox.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@
174174
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.PrefixTextHintBehavior)" />
175175
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.SuffixTextHintBehavior)" />
176176
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="HorizontalContentAlignment" />
177+
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="IsReadOnly" Converter="{x:Static converters:InvertBooleanConverter.Instance}" />
177178
</MultiBinding>
178179
</wpf:SmartHint.InitialHorizontalOffset>
179180
<wpf:SmartHint.Margin>

src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ComboBox.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,7 @@
416416
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.PrefixTextHintBehavior)" />
417417
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.SuffixTextHintBehavior)" />
418418
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="HorizontalContentAlignment" />
419+
<Binding Path="IsEditable" RelativeSource="{RelativeSource TemplatedParent}" />
419420
</MultiBinding>
420421
</wpf:SmartHint.InitialHorizontalOffset>
421422
<wpf:SmartHint.Margin>

src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.PasswordBox.xaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@
216216
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.PrefixTextHintBehavior)" />
217217
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.SuffixTextHintBehavior)" />
218218
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="HorizontalContentAlignment" />
219+
<Binding Source="{StaticResource TrueValue}" />
219220
</MultiBinding>
220221
</wpf:SmartHint.InitialHorizontalOffset>
221222
<wpf:SmartHint.Margin>
@@ -836,6 +837,7 @@
836837
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.PrefixTextHintBehavior)" />
837838
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.SuffixTextHintBehavior)" />
838839
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="HorizontalContentAlignment" />
840+
<Binding Source="{StaticResource TrueValue}" />
839841
</MultiBinding>
840842
</wpf:SmartHint.InitialHorizontalOffset>
841843
<wpf:SmartHint.Margin>

src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.TextBox.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,7 @@
212212
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.PrefixTextHintBehavior)" />
213213
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.SuffixTextHintBehavior)" />
214214
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="HorizontalContentAlignment" />
215+
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="IsReadOnly" Converter="{x:Static converters:InvertBooleanConverter.Instance}" />
215216
</MultiBinding>
216217
</wpf:SmartHint.InitialHorizontalOffset>
217218
<wpf:SmartHint.Margin>

0 commit comments

Comments
 (0)