Skip to content

Commit 4765ca3

Browse files
TextField.PrefixText spec update (#2220)
1 parent 8402468 commit 4765ca3

File tree

2 files changed

+52
-17
lines changed

2 files changed

+52
-17
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using System;
2+
using System.Globalization;
3+
using System.Windows;
4+
using System.Windows.Data;
5+
6+
namespace MaterialDesignThemes.Wpf.Converters
7+
{
8+
public class TextFieldPrefixTextVisibilityConverter : IMultiValueConverter
9+
{
10+
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
11+
{
12+
string prefixText = (string)values[1];
13+
if(string.IsNullOrEmpty(prefixText))
14+
{
15+
return Visibility.Collapsed;
16+
}
17+
18+
bool isHintInFloatingPosition = (bool)values[0];
19+
return isHintInFloatingPosition ? Visibility.Visible : Visibility.Hidden;
20+
}
21+
22+
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) => throw new NotImplementedException();
23+
}
24+
}

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.TextBox.xaml

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
<converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
1111
<converters:TextFieldClearButtonVisibilityConverter x:Key="ClearButtonVisibilityConverter" />
12+
<converters:TextFieldPrefixTextVisibilityConverter x:Key="PrefixTextVisibilityConverter" />
1213
<converters:NotConverter x:Key="NotConverter" />
1314
<converters:MathConverter x:Key="MathMultiplyConverter" Operation="Multiply" />
1415
<converters:FloatingHintOffsetCalculationConverter x:Key="FloatingHintOffsetCalculationConverter" />
@@ -102,25 +103,35 @@
102103
<ColumnDefinition Width="*" />
103104
<ColumnDefinition Width="Auto" />
104105
</Grid.ColumnDefinitions>
105-
<TextBlock
106-
x:Name="PrefixTextBlock"
107-
Grid.Column="0"
108-
FontSize="{TemplateBinding FontSize}"
109-
Opacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
110-
Text="{TemplateBinding wpf:TextFieldAssist.PrefixText}" />
111-
<ScrollViewer
112-
x:Name="PART_ContentHost"
113-
Grid.Column="1"
114-
Panel.ZIndex="1"
115-
Focusable="false"
116-
HorizontalScrollBarVisibility="Hidden"
117-
VerticalScrollBarVisibility="Hidden"
118-
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
119-
UseLayoutRounding="{TemplateBinding UseLayoutRounding}"
120-
wpf:ScrollViewerAssist.IgnorePadding="True" />
106+
<WrapPanel
107+
Grid.Column="0">
108+
<TextBlock
109+
x:Name="PrefixTextBlock"
110+
Margin="0 0 2 0"
111+
FontSize="{TemplateBinding FontSize}"
112+
Opacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
113+
Text="{TemplateBinding wpf:TextFieldAssist.PrefixText}">
114+
<TextBlock.Visibility>
115+
<MultiBinding Converter="{StaticResource PrefixTextVisibilityConverter}">
116+
<Binding ElementName="Hint" Path="IsHintInFloatingPosition" />
117+
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.PrefixText)" />
118+
</MultiBinding>
119+
</TextBlock.Visibility>
120+
</TextBlock>
121+
122+
<ScrollViewer
123+
x:Name="PART_ContentHost"
124+
Panel.ZIndex="1"
125+
Focusable="false"
126+
HorizontalScrollBarVisibility="Hidden"
127+
VerticalScrollBarVisibility="Hidden"
128+
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
129+
UseLayoutRounding="{TemplateBinding UseLayoutRounding}"
130+
wpf:ScrollViewerAssist.IgnorePadding="True" />
131+
</WrapPanel>
121132
<wpf:SmartHint
122133
x:Name="Hint"
123-
Grid.Column="1"
134+
Grid.Column="0"
124135
HintProxy="{Binding RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static converters:HintProxyFabricConverter.Instance}}"
125136
FontSize="{TemplateBinding FontSize}"
126137
FontFamily="{TemplateBinding wpf:HintAssist.FontFamily}"

0 commit comments

Comments
 (0)