Wednesday, September 10, 2014

WPF Data Validation

Create a Control Template
<ControlTemplate x:Key="validationErrorTemplate">
    <DockPanel>
        <TextBlock Foreground="Red"
            DockPanel.Dock="Top">!</TextBlock>
        <AdornedElementPlaceholder
           x:Name="ErrorAdorner"
        ></AdornedElementPlaceholder>
    </DockPanel>
</ControlTemplate>

Create a Validation Rule
public class NameValidator : ValidationRule
{
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        if (value == null)
            return new ValidationResult(false, "value cannot be empty.");
        else
        {
            if (value.ToString().Length > 3)
                return new ValidationResult
                (false, "Name cannot be more than 3 characters long.");
        }
        return ValidationResult.ValidResult;
    }
}

Plug the Validation Control Template with the control
<TextBox Height="23" HorizontalAlignment="Left"
              Grid.Column="1" Grid.Row="0" Name="textBox1"
              VerticalAlignment="Top" Width="120"
              Validation.ErrorTemplate="{StaticResource validationErrorTemplate}">
    <TextBox.Text>
        <Binding Path="Name" Mode="TwoWay" UpdateSourceTrigger="LostFocus">
            <Binding.ValidationRules>
                <local:NameValidator></local:NameValidator>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox> 

No comments:

Post a Comment