aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Touch/Controls/TouchTextBox.xaml
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-06-18 17:17:54 +0300
committerShlomo Hecht <shlomo@twine-s.com>2018-06-18 17:17:54 +0300
commitabe3be77d04fe00d179da2eacee647b675fe9f9f (patch)
tree806515c820cd70e36381edad48d7d08b75b4ab1f /Software/Visual_Studio/Tango.Touch/Controls/TouchTextBox.xaml
parent253ef67316c94ea789d6fa8adf315a684a24f8fe (diff)
parent70546e7e106b1d254a1f8069c07e8294d322065b (diff)
downloadTango-abe3be77d04fe00d179da2eacee647b675fe9f9f.tar.gz
Tango-abe3be77d04fe00d179da2eacee647b675fe9f9f.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Visual_Studio/Tango.Touch/Controls/TouchTextBox.xaml')
-rw-r--r--Software/Visual_Studio/Tango.Touch/Controls/TouchTextBox.xaml162
1 files changed, 162 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchTextBox.xaml b/Software/Visual_Studio/Tango.Touch/Controls/TouchTextBox.xaml
new file mode 100644
index 000000000..fd197629d
--- /dev/null
+++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchTextBox.xaml
@@ -0,0 +1,162 @@
+<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:keyboard="clr-namespace:Tango.Touch.Keyboard"
+ 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:local="clr-namespace:Tango.Touch.Controls">
+
+ <ResourceDictionary.MergedDictionaries>
+ <ResourceDictionary Source="../Resources/Colors.xaml" />
+
+ <ResourceDictionary>
+ <converters:StringNullOrEmptyToBooleanConverter x:Key="StringNullOrEmptyToBooleanConverter" />
+ <converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
+ <converters:MathOperatorConverter x:Key="MathOperatorConverter" />
+ <localConverters:StringToPasswordConverter x:Key="StringToPasswordConverter" />
+ </ResourceDictionary>
+ </ResourceDictionary.MergedDictionaries>
+
+ <Style TargetType="{x:Type local:TouchTextBox}">
+ <Setter Property="Focusable" Value="False"></Setter>
+ <Setter Property="keyboard:KeyboardView.Mode" Value="AlphaNumeric"></Setter>
+ <Setter Property="keyboard:KeyboardView.Action" Value="Tab"></Setter>
+ <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"></Setter>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="{x:Type local:TouchTextBox}">
+ <Border Background="{TemplateBinding Background}"
+ BorderBrush="{TemplateBinding BorderBrush}"
+ BorderThickness="{TemplateBinding BorderThickness}">
+ <DockPanel>
+ <Border DockPanel.Dock="Bottom" Visibility="{Binding RelativeSource={RelativeSource AncestorType=local:TouchTextBox},Path=(Validation.HasError),Converter={StaticResource BooleanToVisibilityConverter}}">
+ <TextBlock FontSize="12" Foreground="{StaticResource TangoValidationErrorBrush}" Margin="0 5 0 0" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource AncestorType=local:TouchTextBox},Path=(Validation.Errors).CurrentItem.ErrorContent}"></TextBlock>
+ </Border>
+ <DockPanel>
+ <Grid DockPanel.Dock="Bottom" Height="2">
+ <Rectangle Fill="{StaticResource TangoTextWatermarkBrush}" />
+ <Rectangle RenderTransformOrigin="0.5,0.5" >
+ <Rectangle.Style>
+ <Style TargetType="Rectangle">
+ <Setter Property="Fill" Value="{StaticResource TangoPrimaryAccentBrush}"></Setter>
+ <Setter Property="RenderTransform">
+ <Setter.Value>
+ <ScaleTransform ScaleY="1" ScaleX="0" />
+ </Setter.Value>
+ </Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding ElementName=PART_TextBox,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">
+ <Setter.Value>
+ <ScaleTransform ScaleY="1" ScaleX="1" />
+ </Setter.Value>
+ </Setter>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </Rectangle.Style>
+ </Rectangle>
+ </Grid>
+
+ <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>
+ <TextBlock IsHitTestVisible="False" Text="{TemplateBinding Watermark}" Foreground="{StaticResource TangoTextWatermarkBrush}">
+ <TextBlock.Style>
+ <Style TargetType="TextBlock">
+ <Setter Property="Visibility" Value="Hidden"></Setter>
+ <Style.Triggers>
+ <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_TextBox,Path=IsFocused}" Value="False"></Condition>
+ </MultiDataTrigger.Conditions>
+ <Setter Property="Visibility" Value="Visible"></Setter>
+ </MultiDataTrigger>
+ </Style.Triggers>
+ </Style>
+ </TextBlock.Style>
+ </TextBlock>
+ </Grid>
+ </components:Ripple>
+
+ <Canvas VerticalAlignment="Top" IsHitTestVisible="False" Margin="0 -4 0 0">
+ <Canvas.Style>
+ <Style TargetType="Canvas">
+ <Setter Property="Visibility" Value="Hidden"></Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=local:TouchTextBox},Path=Text,UpdateSourceTrigger=PropertyChanged,Converter={StaticResource StringNullOrEmptyToBooleanConverter}}" Value="False">
+ <Setter Property="Visibility" Value="Visible"></Setter>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding ElementName=PART_TextBox,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.Style>
+ <Style TargetType="TextBlock">
+ <Setter Property="Opacity" Value="0"></Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Canvas},Path=Visibility}" Value="Visible">
+ <DataTrigger.EnterActions>
+ <BeginStoryboard>
+ <Storyboard>
+ <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="00:00:0.2" To="1" />
+ </Storyboard>
+ </BeginStoryboard>
+ </DataTrigger.EnterActions>
+ <DataTrigger.ExitActions>
+ <BeginStoryboard>
+ <Storyboard>
+ <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="00:00:0.2" To="0" />
+ </Storyboard>
+ </BeginStoryboard>
+ </DataTrigger.ExitActions>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </TextBlock.Style>
+ </TextBlock>
+ </Canvas>
+ </Grid>
+ </DockPanel>
+ </DockPanel>
+ </Border>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+
+</ResourceDictionary> \ No newline at end of file