1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 pre { line-height: 125%; } td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */using System; using System.Collections.Generic; using <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:helpers="clr-namespace:Tango.SharedUI.Helpers;assembly=Tango.SharedUI" 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:BooleanToVisibilityInverseConverter x:Key="BooleanToVisibilityInverseConverter" /> <converters:MathOperatorConverter x:Key="MathOperatorConverter" /> <converters:DisplayMemberPathConverter x:Key="DisplayMemberPathConverter" /> <converters:NullObjectToBooleanConverter x:Key="NullObjectToBooleanConverter" /> </ResourceDictionary> </ResourceDictionary.MergedDictionaries> <Style TargetType="{x:Type local:TouchAutoComplete}"> <Setter Property="Focusable" Value="False"></Setter> <Setter Property="FocusVisualStyle" Value="{x:Null}"></Setter> <Setter Property="PopupHeight" Value="150"></Setter> <Setter Property="keyboard:KeyboardView.Mode" Value="{Binding RelativeSource={RelativeSource Self},Path=KeyboardMode}"></Setter> <Setter Property="keyboard:KeyboardView.Action" Value="{Binding RelativeSource={RelativeSource Self},Path=KeyboardAction}"></Setter> <Setter Property="keyboard:KeyboardView.Container" Value="{Binding RelativeSource={RelativeSource Self},Path=KeyboardContainer}"></Setter> <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"></Setter> <Setter Property="VerticalContentAlignment" Value="Bottom"></Setter> <Setter Property="MinHeight" Value="40"></Setter> <Setter Property="ItemTemplate"> <Setter.Value> <DataTemplate> <Border> <Label VerticalAlignment="Center" FontWeight="Normal"> <Label.Content> <MultiBinding Converter="{StaticResource DisplayMemberPathConverter}"> <Binding Path="." /> <Binding RelativeSource="{RelativeSource AncestorType=local:TouchAutoComplete}" Path="DisplayMemberPath" /> </MultiBinding> </Label.Content> </Label> </Border> </DataTemplate> </Setter.Value> </Setter> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type local:TouchAutoComplete}"> <Border x:Name="PART_Border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" keyboard:KeyboardView.Container="{TemplateBinding KeyboardContainer}"> <Grid> <DockPanel> <Border DockPanel.Dock="Bottom" Visibility="{Binding RelativeSource={RelativeSource AncestorType=local:TouchAutoComplete},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:TouchAutoComplete},Path=(Validation.Errors).CurrentItem.ErrorContent}"></TextBlock> </Border> <DockPanel> <Grid DockPanel.Dock="Bottom" Height="2"> <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> <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:TouchAutoComplete},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 Foreground="{TemplateBinding Foreground}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" Padding="0 0 0 4" CaretBrush="{StaticResource TangoPrimaryAccentBrush}" FocusVisualStyle="{x:Null}" x:Name="PART_TextBox" Text="{Binding RelativeSource={RelativeSource AncestorType=local:TouchAutoComplete},Path=Text,UpdateSourceTrigger=PropertyChanged}" BorderThickness="0" Background="Transparent"></TextBox> <TextBlock IsHitTestVisible="False" Text="{TemplateBinding Watermark}" Foreground="{StaticResource TangoTextWatermarkBrush}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> <TextBlock.Style> <Style TargetType="TextBlock"> <Setter Property="Visibility" Value="Hidden"></Setter> <Style.Triggers> <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType=local:TouchAutoComplete},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> </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:TouchAutoComplete},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 FontWeight="Bold" FontSize="11" Foreground="{StaticResource TangoPrimaryAccentBrush}" Canvas.Top="{Binding RelativeSource={RelativeSource Self},Path=ActualHeight,Converter={StaticResource MathOperatorConverter},ConverterParameter='*-1'}" Text=""> <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> <Popup x:Name="PART_Popup" local:TouchPanel.PreventFocusSteal="True" StaysOpen="True" Width="{TemplateBinding ActualWidth}" Height="{TemplateBinding PopupHeight}" PopupAnimation="Slide" AllowsTransparency="True" PlacementTarget="{Binding ElementName=PART_Border}" Placement="Bottom"> <Border Padding="10"> <Border CornerRadius="3" Background="{StaticResource TangoPrimaryBackgroundBrush}"> <Border.Effect> <DropShadowEffect ShadowDepth="0" Color="{StaticResource TangoDropShadowColor}" /> </Border.Effect> <local:TouchListBox x:Name="PART_ListBox" ItemSelectedCommand="{TemplateBinding ItemSelectedCommand}" ItemsSource="{TemplateBinding EffectiveItemsSource}" SelectedItem="{Binding RelativeSource={RelativeSource AncestorType=local:TouchAutoComplete},Path=SelectedItem,Mode=TwoWay}" ItemTemplate="{TemplateBinding ItemTemplate}" SelectionMode="None"> </local:TouchListBox> </Border> </Border> </Popup> </Grid> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> </ResourceDictionary>
using System; using System.Collections.Generic; using <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:helpers="clr-namespace:Tango.SharedUI.Helpers;assembly=Tango.SharedUI" 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:BooleanToVisibilityInverseConverter x:Key="BooleanToVisibilityInverseConverter" /> <converters:MathOperatorConverter x:Key="MathOperatorConverter" /> <converters:DisplayMemberPathConverter x:Key="DisplayMemberPathConverter" /> <converters:NullObjectToBooleanConverter x:Key="NullObjectToBooleanConverter" /> </ResourceDictionary> </ResourceDictionary.MergedDictionaries> <Style TargetType="{x:Type local:TouchAutoComplete}"> <Setter Property="Focusable" Value="False"></Setter> <Setter Property="FocusVisualStyle" Value="{x:Null}"></Setter> <Setter Property="PopupHeight" Value="150"></Setter> <Setter Property="keyboard:KeyboardView.Mode" Value="{Binding RelativeSource={RelativeSource Self},Path=KeyboardMode}"></Setter> <Setter Property="keyboard:KeyboardView.Action" Value="{Binding RelativeSource={RelativeSource Self},Path=KeyboardAction}"></Setter> <Setter Property="keyboard:KeyboardView.Container" Value="{Binding RelativeSource={RelativeSource Self},Path=KeyboardContainer}"></Setter> <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"></Setter> <Setter Property="VerticalContentAlignment" Value="Bottom"></Setter> <Setter Property="MinHeight" Value="40"></Setter> <Setter Property="ItemTemplate"> <Setter.Value> <DataTemplate> <Border> <Label VerticalAlignment="Center" FontWeight="Normal"> <Label.Content> <MultiBinding Converter="{StaticResource DisplayMemberPathConverter}"> <Binding Path="." /> <Binding RelativeSource="{RelativeSource AncestorType=local:TouchAutoComplete}" Path="DisplayMemberPath" /> </MultiBinding> </Label.Content> </Label> </Border> </DataTemplate> </Setter.Value> </Setter> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type local:TouchAutoComplete}"> <Border x:Name="PART_Border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" keyboard:KeyboardView.Container="{TemplateBinding KeyboardContainer}"> <Grid> <DockPanel> <Border DockPanel.Dock="Bottom" Visibility="{Binding RelativeSource={RelativeSource AncestorType=local:TouchAutoComplete},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:TouchAutoComplete},Path=(Validation.Errors).CurrentItem.ErrorContent}"></TextBlock> </Border> <DockPanel> <Grid DockPanel.Dock="Bottom" Height="2"> <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> <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:TouchAutoComplete},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 Foreground="{TemplateBinding Foreground}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" Padding="0 0 0 4" CaretBrush="{StaticResource TangoPrimaryAccentBrush}" FocusVisualStyle="{x:Null}" x:Name="PART_TextBox" Text="{Binding RelativeSource={RelativeSource AncestorType=local:TouchAutoComplete},Path=Text,UpdateSourceTrigger=PropertyChanged}" BorderThickness="0" Background="Transparent"></TextBox> <TextBlock IsHitTestVisible="False" Text="{TemplateBinding Watermark}" Foreground="{StaticResource TangoTextWatermarkBrush}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> <TextBlock.Style> <Style TargetType="TextBlock"> <Setter Property="Visibility" Value="Hidden"></Setter> <Style.Triggers> <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType=local:TouchAutoComplete},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> </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:TouchAutoComplete},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 FontWeight="Bold" FontSize="11" Foreground="{StaticResource TangoPrimaryAccentBrush}" Canvas.Top="{Binding RelativeSource={RelativeSource Self},Path=ActualHeight,Converter={StaticResource MathOperatorConverter},ConverterParameter='*-1'}" Text=""> <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> <Popup x:Name="PART_Popup" local:TouchPanel.PreventFocusSteal="True" StaysOpen="True" Width="{TemplateBinding ActualWidth}" Height="{TemplateBinding PopupHeight}" PopupAnimation="Slide" AllowsTransparency="True" PlacementTarget="{Binding ElementName=PART_Border}" Placement="Bottom"> <Border Padding="10"> <Border CornerRadius="3" Background="{StaticResource TangoPrimaryBackgroundBrush}"> <Border.Effect> <DropShadowEffect ShadowDepth="0" Color="{StaticResource TangoDropShadowColor}" /> </Border.Effect> <local:TouchListBox x:Name="PART_ListBox" ItemSelectedCommand="{TemplateBinding ItemSelectedCommand}" ItemsSource="{TemplateBinding EffectiveItemsSource}" SelectedItem="{Binding RelativeSource={RelativeSource AncestorType=local:TouchAutoComplete},Path=SelectedItem,Mode=TwoWay}" ItemTemplate="{TemplateBinding ItemTemplate}" SelectionMode="None"> </local:TouchListBox> </Border> </Border> </Popup> </Grid> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> </ResourceDictionary>
<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:helpers="clr-namespace:Tango.SharedUI.Helpers;assembly=Tango.SharedUI" 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:BooleanToVisibilityInverseConverter x:Key="BooleanToVisibilityInverseConverter" /> <converters:MathOperatorConverter x:Key="MathOperatorConverter" /> <converters:DisplayMemberPathConverter x:Key="DisplayMemberPathConverter" /> <converters:NullObjectToBooleanConverter x:Key="NullObjectToBooleanConverter" /> </ResourceDictionary> </ResourceDictionary.MergedDictionaries> <Style TargetType="{x:Type local:TouchAutoComplete}"> <Setter Property="Focusable" Value="False"></Setter> <Setter Property="FocusVisualStyle" Value="{x:Null}"></Setter> <Setter Property="PopupHeight" Value="150"></Setter> <Setter Property="keyboard:KeyboardView.Mode" Value="{Binding RelativeSource={RelativeSource Self},Path=KeyboardMode}"></Setter> <Setter Property="keyboard:KeyboardView.Action" Value="{Binding RelativeSource={RelativeSource Self},Path=KeyboardAction}"></Setter> <Setter Property="keyboard:KeyboardView.Container" Value="{Binding RelativeSource={RelativeSource Self},Path=KeyboardContainer}"></Setter> <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"></Setter> <Setter Property="VerticalContentAlignment" Value="Bottom"></Setter> <Setter Property="MinHeight" Value="40"></Setter> <Setter Property="ItemTemplate"> <Setter.Value> <DataTemplate> <Border> <Label VerticalAlignment="Center" FontWeight="Normal"> <Label.Content> <MultiBinding Converter="{StaticResource DisplayMemberPathConverter}"> <Binding Path="." /> <Binding RelativeSource="{RelativeSource AncestorType=local:TouchAutoComplete}" Path="DisplayMemberPath" /> </MultiBinding> </Label.Content> </Label> </Border> </DataTemplate> </Setter.Value> </Setter> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type local:TouchAutoComplete}"> <Border x:Name="PART_Border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" keyboard:KeyboardView.Container="{TemplateBinding KeyboardContainer}"> <Grid> <DockPanel> <Border DockPanel.Dock="Bottom" Visibility="{Binding RelativeSource={RelativeSource AncestorType=local:TouchAutoComplete},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:TouchAutoComplete},Path=(Validation.Errors).CurrentItem.ErrorContent}"></TextBlock> </Border> <DockPanel> <Grid DockPanel.Dock="Bottom" Height="2"> <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> <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:TouchAutoComplete},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 Foreground="{TemplateBinding Foreground}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" Padding="0 0 0 4" CaretBrush="{StaticResource TangoPrimaryAccentBrush}" FocusVisualStyle="{x:Null}" x:Name="PART_TextBox" Text="{Binding RelativeSource={RelativeSource AncestorType=local:TouchAutoComplete},Path=Text,UpdateSourceTrigger=PropertyChanged}" BorderThickness="0" Background="Transparent"></TextBox> <TextBlock IsHitTestVisible="False" Text="{TemplateBinding Watermark}" Foreground="{StaticResource TangoTextWatermarkBrush}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> <TextBlock.Style> <Style TargetType="TextBlock"> <Setter Property="Visibility" Value="Hidden"></Setter> <Style.Triggers> <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType=local:TouchAutoComplete},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> </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:TouchAutoComplete},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 FontWeight="Bold" FontSize="11" Foreground="{StaticResource TangoPrimaryAccentBrush}" Canvas.Top="{Binding RelativeSource={RelativeSource Self},Path=ActualHeight,Converter={StaticResource MathOperatorConverter},ConverterParameter='*-1'}" Text=""> <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> <Popup x:Name="PART_Popup" local:TouchPanel.PreventFocusSteal="True" StaysOpen="True" Width="{TemplateBinding ActualWidth}" Height="{TemplateBinding PopupHeight}" PopupAnimation="Slide" AllowsTransparency="True" PlacementTarget="{Binding ElementName=PART_Border}" Placement="Bottom"> <Border Padding="10"> <Border CornerRadius="3" Background="{StaticResource TangoPrimaryBackgroundBrush}"> <Border.Effect> <DropShadowEffect ShadowDepth="0" Color="{StaticResource TangoDropShadowColor}" /> </Border.Effect> <local:TouchListBox x:Name="PART_ListBox" ItemSelectedCommand="{TemplateBinding ItemSelectedCommand}" ItemsSource="{TemplateBinding EffectiveItemsSource}" SelectedItem="{Binding RelativeSource={RelativeSource AncestorType=local:TouchAutoComplete},Path=SelectedItem,Mode=TwoWay}" ItemTemplate="{TemplateBinding ItemTemplate}" SelectionMode="None"> </local:TouchListBox> </Border> </Border> </Popup> </Grid> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> </ResourceDictionary>