diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2018-06-18 21:07:14 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2018-06-18 21:07:14 +0300 |
| commit | d6ca354bfddee7cbe1ef186ad4c8a80e97410c2f (patch) | |
| tree | 7837aacea83a47d5b9deae034921e87671280ace /Software/Visual_Studio/Tango.Touch/Controls/TouchTextBox.xaml | |
| parent | abe3be77d04fe00d179da2eacee647b675fe9f9f (diff) | |
| download | Tango-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.xaml | 51 |
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> |
