aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Touch/Controls/TouchTextBox.xaml
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2018-06-18 21:07:14 +0300
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2018-06-18 21:07:14 +0300
commitd6ca354bfddee7cbe1ef186ad4c8a80e97410c2f (patch)
tree7837aacea83a47d5b9deae034921e87671280ace /Software/Visual_Studio/Tango.Touch/Controls/TouchTextBox.xaml
parentabe3be77d04fe00d179da2eacee647b675fe9f9f (diff)
downloadTango-d6ca354bfddee7cbe1ef186ad4c8a80e97410c2f.tar.gz
Tango-d6ca354bfddee7cbe1ef186ad4c8a80e97410c2f.zip
Implemented Touch Password Box.
Diffstat (limited to 'Software/Visual_Studio/Tango.Touch/Controls/TouchTextBox.xaml')
-rw-r--r--Software/Visual_Studio/Tango.Touch/Controls/TouchTextBox.xaml51
1 files changed, 35 insertions, 16 deletions
diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchTextBox.xaml b/Software/Visual_Studio/Tango.Touch/Controls/TouchTextBox.xaml
index fd197629d..a4d264636 100644
--- a/Software/Visual_Studio/Tango.Touch/Controls/TouchTextBox.xaml
+++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchTextBox.xaml
@@ -4,6 +4,7 @@
xmlns:components="clr-namespace:Tango.Touch.Components"
xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI"
xmlns:localConverters="clr-namespace:Tango.Touch.Converters"
+ xmlns:helpers="clr-namespace:Tango.SharedUI.Helpers;assembly=Tango.SharedUI"
xmlns:local="clr-namespace:Tango.Touch.Controls">
<ResourceDictionary.MergedDictionaries>
@@ -12,6 +13,7 @@
<ResourceDictionary>
<converters:StringNullOrEmptyToBooleanConverter x:Key="StringNullOrEmptyToBooleanConverter" />
<converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
+ <converters:BooleanToVisibilityInverseConverter x:Key="BooleanToVisibilityInverseConverter" />
<converters:MathOperatorConverter x:Key="MathOperatorConverter" />
<localConverters:StringToPasswordConverter x:Key="StringToPasswordConverter" />
</ResourceDictionary>
@@ -34,8 +36,8 @@
</Border>
<DockPanel>
<Grid DockPanel.Dock="Bottom" Height="2">
- <Rectangle Fill="{StaticResource TangoTextWatermarkBrush}" />
- <Rectangle RenderTransformOrigin="0.5,0.5" >
+ <Rectangle Height="1" Fill="{StaticResource TangoTextWatermarkBrush}" />
+ <Rectangle Height="2" RenderTransformOrigin="0.5,0.5" >
<Rectangle.Style>
<Style TargetType="Rectangle">
<Setter Property="Fill" Value="{StaticResource TangoPrimaryAccentBrush}"></Setter>
@@ -61,6 +63,22 @@
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
+ <DataTrigger Binding="{Binding ElementName=PART_PasswordBox,Path=IsFocused}" Value="True">
+ <DataTrigger.EnterActions>
+ <BeginStoryboard>
+ <Storyboard>
+ <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" To="1" Duration="00:00:0.4" />
+ </Storyboard>
+ </BeginStoryboard>
+ </DataTrigger.EnterActions>
+ <DataTrigger.ExitActions>
+ <BeginStoryboard>
+ <Storyboard>
+ <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" To="0" Duration="00:00:0.4" />
+ </Storyboard>
+ </BeginStoryboard>
+ </DataTrigger.ExitActions>
+ </DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=local:TouchTextBox},Path=(Validation.HasError)}" Value="True">
<Setter Property="Fill" Value="{StaticResource TangoValidationErrorBrush}"></Setter>
<Setter Property="RenderTransform">
@@ -78,19 +96,8 @@
<Grid>
<components:Ripple RippleBrush="{StaticResource TangoRippleDarkBrush}" RippleFactor="15">
<Grid>
- <TextBox Padding="0 0 0 4" CaretBrush="{StaticResource TangoPrimaryAccentBrush}" FocusVisualStyle="{x:Null}" x:Name="PART_TextBox" keyboard:KeyboardView.Mode="{TemplateBinding keyboard:KeyboardView.Mode}" keyboard:KeyboardView.Action="{TemplateBinding keyboard:KeyboardView.Action}" Text="{Binding RelativeSource={RelativeSource AncestorType=local:TouchTextBox},Path=Text,UpdateSourceTrigger=PropertyChanged}" BorderThickness="0" Background="Transparent">
- <TextBox.Style>
- <Style TargetType="TextBox">
- <Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource AncestorType=local:TouchTextBox},Path=Foreground}"></Setter>
- <Style.Triggers>
- <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=local:TouchTextBox},Path=IsPassword}" Value="True">
- <Setter Property="Foreground" Value="Transparent"></Setter>
- </DataTrigger>
- </Style.Triggers>
- </Style>
- </TextBox.Style>
- </TextBox>
- <TextBlock IsHitTestVisible="False" Visibility="{Binding RelativeSource={RelativeSource AncestorType=local:TouchTextBox},Path=IsPassword,Converter={StaticResource BooleanToVisibilityConverter}}" Padding="0 0 0 4" Text="{Binding RelativeSource={RelativeSource AncestorType=local:TouchTextBox},Path=Text,UpdateSourceTrigger=PropertyChanged,Converter={StaticResource StringToPasswordConverter}}"></TextBlock>
+ <TextBox Padding="0 0 0 4" CaretBrush="{StaticResource TangoPrimaryAccentBrush}" FocusVisualStyle="{x:Null}" x:Name="PART_TextBox" keyboard:KeyboardView.Mode="{TemplateBinding keyboard:KeyboardView.Mode}" keyboard:KeyboardView.Action="{TemplateBinding keyboard:KeyboardView.Action}" Text="{Binding RelativeSource={RelativeSource AncestorType=local:TouchTextBox},Path=Text,UpdateSourceTrigger=PropertyChanged}" BorderThickness="0" Background="Transparent" Visibility="{Binding RelativeSource={RelativeSource AncestorType=local:TouchTextBox},Path=IsPassword,Converter={StaticResource BooleanToVisibilityInverseConverter}}"></TextBox>
+ <PasswordBox helpers:PasswordHelper.Attach="True" helpers:PasswordHelper.Password="{Binding RelativeSource={RelativeSource AncestorType=local:TouchTextBox},Path=Text,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Padding="0 0 0 4" CaretBrush="{StaticResource TangoPrimaryAccentBrush}" FocusVisualStyle="{x:Null}" x:Name="PART_PasswordBox" keyboard:KeyboardView.Mode="{TemplateBinding keyboard:KeyboardView.Mode}" keyboard:KeyboardView.Action="{TemplateBinding keyboard:KeyboardView.Action}" BorderThickness="0" Background="Transparent" Visibility="{Binding RelativeSource={RelativeSource AncestorType=local:TouchTextBox},Path=IsPassword,Converter={StaticResource BooleanToVisibilityConverter}}"></PasswordBox>
<TextBlock IsHitTestVisible="False" Text="{TemplateBinding Watermark}" Foreground="{StaticResource TangoTextWatermarkBrush}">
<TextBlock.Style>
<Style TargetType="TextBlock">
@@ -100,6 +107,15 @@
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource AncestorType=local:TouchTextBox},Path=Text,Converter={StaticResource StringNullOrEmptyToBooleanConverter},UpdateSourceTrigger=PropertyChanged}" Value="True"></Condition>
<Condition Binding="{Binding ElementName=PART_TextBox,Path=IsFocused}" Value="False"></Condition>
+ <Condition Binding="{Binding ElementName=PART_TextBox,Path=Visibility}" Value="Visible"></Condition>
+ </MultiDataTrigger.Conditions>
+ <Setter Property="Visibility" Value="Visible"></Setter>
+ </MultiDataTrigger>
+ <MultiDataTrigger>
+ <MultiDataTrigger.Conditions>
+ <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType=local:TouchTextBox},Path=Text,Converter={StaticResource StringNullOrEmptyToBooleanConverter},UpdateSourceTrigger=PropertyChanged}" Value="True"></Condition>
+ <Condition Binding="{Binding ElementName=PART_PasswordBox,Path=IsFocused}" Value="False"></Condition>
+ <Condition Binding="{Binding ElementName=PART_PasswordBox,Path=Visibility}" Value="Visible"></Condition>
</MultiDataTrigger.Conditions>
<Setter Property="Visibility" Value="Visible"></Setter>
</MultiDataTrigger>
@@ -121,10 +137,13 @@
<DataTrigger Binding="{Binding ElementName=PART_TextBox,Path=IsFocused}" Value="True">
<Setter Property="Visibility" Value="Visible"></Setter>
</DataTrigger>
+ <DataTrigger Binding="{Binding ElementName=PART_PasswordBox,Path=IsFocused}" Value="True">
+ <Setter Property="Visibility" Value="Visible"></Setter>
+ </DataTrigger>
</Style.Triggers>
</Style>
</Canvas.Style>
- <TextBlock FontSize="11" Foreground="{StaticResource TangoPrimaryAccentBrush}" Canvas.Top="{Binding RelativeSource={RelativeSource Self},Path=ActualHeight,Converter={StaticResource MathOperatorConverter},ConverterParameter='*-1'}" Text="{Binding RelativeSource={RelativeSource AncestorType=local:TouchTextBox},Path=Watermark}">
+ <TextBlock FontWeight="Bold" FontSize="11" Foreground="{StaticResource TangoPrimaryAccentBrush}" Canvas.Top="{Binding RelativeSource={RelativeSource Self},Path=ActualHeight,Converter={StaticResource MathOperatorConverter},ConverterParameter='*-1'}" Text="{Binding RelativeSource={RelativeSource AncestorType=local:TouchTextBox},Path=Watermark}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Opacity" Value="0"></Setter>