Validating textboxes in WPF. The validtion is checked at LostFocus event of TextBox
- public void ValidateTextbox(ref TextBox ctrltxt, string p)
- {
- int count = 0;
- string errormessage=string.Empty;
- BindingExpression expression = ctrltxt.GetBindingExpression(TextBox.TextProperty);
- expression.UpdateSource();
- if (true)
- {
- ValidationError error = new ValidationError(new ExceptionValidationRule(), expression, errormessage, null);
- Validation.MarkInvalid(expression, error);
-
- }
-
- }
XAML code for the TEXTBOX is as below
- <TextBox Name="FieldName" HorizontalAlignment="Stretch"
- VerticalAlignment="Stretch"
- Text="{Binding Path=DisplayData, ValidatesOnDataErrors=True ,NotifyOnValidationError=True , UpdateSourceTrigger=LostFocus, ValidatesOnExceptions=True}"
- Grid.Column="1"
- Margin="4,4,4,4" Validation.ErrorTemplate="{StaticResource InputErrorTemplate}" >
- </TextBox>
InputErrorTemplate is as below
- <ControlTemplate x:Key="InputErrorTemplate">
- <DockPanel>
- <Border Name="validationBorder" BorderBrush="Red" BorderThickness="2" Padding="1" CornerRadius="3">
- <Border.Resources>
- <Storyboard x:Key="_blink">
- <ColorAnimationUsingKeyFrames AutoReverse="True" BeginTime="00:00:00" Storyboard.TargetName="validationBorder" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" RepeatBehavior="00:00:02">
- <SplineColorKeyFrame KeyTime="00:00:00.5" Value="#00FF0000"/>
- </ColorAnimationUsingKeyFrames>
- </Storyboard>
- </Border.Resources>
- <Border.Triggers>
- <EventTrigger RoutedEvent="FrameworkElement.Loaded">
- <BeginStoryboard Storyboard="{StaticResource _blink}" />
- </EventTrigger>
- </Border.Triggers>
- <AdornedElementPlaceholder/>
- </Border>
- </DockPanel>
- </ControlTemplate>