Table of Contents


ValidationRules is a class, which provides a way to create a custom rule in order to check the validity of a user input. These ValidationRules are specific to WPF, they did not get carried over to Silverlight, Windows phone or Windows 8 XAML technologies.

What you do is define a class that inherits from a ValidationRule base class, and then you override a validate method that’s an abstract method in the base class. That Validate method returns a ValidationResult Object, which includes a flag to indicate success or failure, a Boolean, and an error message that can be associated with it. Once you have the ValidationRule defined, you go and you hook it up to a ValidationRules collection that’s on a binding.


Create a WPF application. Create a class that implements ValidationRule and override the Validate method. Here you can write the validation rule for your application. Give a regular expression to validate email id.

public class RegexValidation : ValidationRule
       public override ValidationResult Validate(object value, CultureInfo cultureInfo)
           Regex regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
           Match match = regex.Match(value.ToString());
           if (match == null || match == Match.Empty)
               return new ValidationResult(false, "Please enter valid email");
               return ValidationResult.ValidResult;

Inside MainWindow class, create one property

public partial class MainWindow : Window
        public MainWindow()
        private string email;
        public string Email
            get { return email; }
            set { email = value; }

In XAML, Bind the property and specify the validation rule here.

            <TextBox Margin="5" Height="30"
                     Width="200" >
                    <Binding Path="Email" ElementName="thiswindow" >
            <TextBox Margin="5" Height="30" Width="200" ></TextBox>

Run the application and type any invalid email address and hit enter, you can see a red box on the email address textbox. This is coming from our regular expression validation.

See Also

Data Input Validation In WPF : Validation With Exception