Expand Minimize
0 out of 3 rated this helpful - Rate this topic

How to: Implement Validation Logic on Custom Objects

This example shows how to implement validation logic on a custom object and then bind to it.

You can provide validation logic on the business layer if your source object implements IDataErrorInfo, as in the following example:

public class Person : IDataErrorInfo
    private int age;

    public int Age
        get { return age; }
        set { age = value; }

    public string Error
            return null;

    public string this[string name]
            string result = null;

            if (name == "Age")
                if (this.age < 0 || this.age > 150)
                    result = "Age must not be less than 0 or greater than 150.";
            return result;

In the following example, the text property of the text box binds to the Age property of the Person object, which has been made available for binding through a resource declaration that is given the x:Key data. The DataErrorValidationRule checks for the validation errors raised by the IDataErrorInfo implementation.

<TextBox Style="{StaticResource textBoxInError}">
        <!--By setting ValidatesOnExceptions to True, it checks for exceptions
        that are thrown during the update of the source property.
        An alternative syntax is to add <ExceptionValidationRule/> within
        the <Binding.ValidationRules> section.-->
        <Binding Path="Age" Source="{StaticResource data}"
                <!--DataErrorValidationRule checks for validation 
                    errors raised by the IDataErrorInfo object.-->
                <!--Alternatively, you can set ValidationOnDataErrors="True" on the Binding.-->

Alternatively, instead of using the DataErrorValidationRule, you can set the ValidatesOnDataErrors property to true.

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
© 2014 Microsoft. All rights reserved.