Data Binding 101 Expression Syntax: Listing 2

Modified TextBox Style.

<Style x:Key="DataErrorStyle" TargetType="TextBox">
    <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilyNormal}"/>
    <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMediumLarge}"/>
    <Setter Property="Background" Value="{StaticResource PhoneTextBoxBrush}"/>
    <Setter Property="Foreground" Value="{StaticResource PhoneTextBoxForegroundBrush}"/>
    <Setter Property="BorderBrush" Value="{StaticResource PhoneTextBoxBrush}"/>
    <Setter Property="SelectionBackground" Value="{StaticResource PhoneAccentBrush}"/>
    <Setter Property="SelectionForeground" Value="{StaticResource PhoneTextBoxSelectionForegroundBrush}"/>
    <Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
    <Setter Property="Padding" Value="2"/>
    <Setter Property="Template">
    	<Setter.Value>
    		<ControlTemplate TargetType="TextBox">
    			<Grid x:Name="grid" Background="Transparent">
    				<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
    ...
</VisualStateGroup>
<VisualStateGroup x:Name="FocusStates">
    ...
</VisualStateGroup>
<VisualStateGroup x:Name="ValidationStates">
    <VisualState x:Name="InvalidUnfocused">
    	<Storyboard>
    		<ObjectAnimationUsingKeyFrames 
                Storyboard.TargetProperty="(Border.BorderBrush)" 
                Storyboard.TargetName="border">
    			<DiscreteObjectKeyFrame KeyTime="0">
    				<DiscreteObjectKeyFrame.Value>
    					<SolidColorBrush Color="Red"/>
    				</DiscreteObjectKeyFrame.Value>
    			</DiscreteObjectKeyFrame>
    		</ObjectAnimationUsingKeyFrames>
    	</Storyboard>
    </VisualState>
    <VisualState x:Name="Valid"/>
    <VisualState x:Name="InvalidFocused">
    	<Storyboard>
    		<ObjectAnimationUsingKeyFrames 
                Storyboard.TargetProperty="(Border.BorderBrush)" 
                Storyboard.TargetName="border">
    			<DiscreteObjectKeyFrame KeyTime="0">
    				<DiscreteObjectKeyFrame.Value>
    					<SolidColorBrush Color="Red"/>
    				</DiscreteObjectKeyFrame.Value>
    			</DiscreteObjectKeyFrame>
    		</ObjectAnimationUsingKeyFrames>
    	</Storyboard>
    </VisualState>
</VisualStateGroup>    					
    				</VisualStateManager.VisualStateGroups>
<Border x:Name="border" BorderThickness="1" 
        Margin="{StaticResource PhoneTouchTargetOverhang}">
    <Border x:Name="EnabledBorder" BorderBrush="{TemplateBinding BorderBrush}" 
            BorderThickness="{TemplateBinding BorderThickness}" 
            Background="{TemplateBinding Background}" >
        <ContentControl x:Name="ContentElement" BorderThickness="0" 
                        HorizontalContentAlignment="Stretch" 
                        Margin="{StaticResource PhoneTextBoxInnerMargin}" 
                        Padding="{TemplateBinding Padding}" 
                        VerticalContentAlignment="Stretch"/>
    </Border>
</Border>
...
    			</Grid>
    		</ControlTemplate>
    	</Setter.Value>
    </Setter>
</Style>

About the Author

Nick Randolph runs Built to Roam, a consulting company that specializes in training, mentoring and assisting other companies build mobile applications. With a heritage in rich client applications for both the desktop and a variety of mobile platforms, Nick currently presents, writes and educates on the Windows Phone platform.

comments powered by Disqus

Featured

  • Top Free Extensions for Visual Studio 2022

    With Visual Studio 2022 having debuted just one month ago, there are now dozens of new extensions available specifically targeting the revolutionary 64-bit IDE.

  • Green Motherboard Closeup Graphic

    How to Compute Transformer Architecture Model Accuracy

    Dr. James McCaffrey of Microsoft Research uses the Hugging Face library to simplify the implementation of NLP systems using Transformer Architecture (TA) models.

  • VS Code Snippets Leads Recent Open Source GA Announcements

    GitHub's "Release Radar" for November shows a Visual Studio Code snippets project leading a raft of open source offerings that reached general availability in November.

  • C# Language Server Revamps VS 2022 Razor Editor for ASP.NET Core

    Microsoft is touting new capabilities in ASP.NET Core web development in Visual Studio 2022 thanks to a new Razor editor powered by a Razor Language Server.

Upcoming Events