arrow-left arrow-right brightness-2 chevron-left chevron-right circle-half-full dots-horizontal facebook-box facebook loader magnify menu-down RSS star Twitter twitter GitHub white-balance-sunny window-close
WPF Validation
1 min read

WPF Validation

This is an old post and doesn't necessarily reflect my current thinking on a topic, and some links or images may not work. The text is preserved here for posterity.

(This page is a work in progress)

As the primary Microsoft platform for building client applications, Windows Presentation Foundation has a rich validation system. This article is going to look at the approaches that WPF enables for validation, how to style validation messages to suit your needs, as well as some of the limitations of the system. This article is targeted at .NET 3.5 SP1.

How to Validate

WPF allows you to declare validation logic in the following places:

  • You can declare a rule in XAML and apply it to a binding (UI only)
  • You can throw exceptions in property setters (models)
  • You can implement the IDataErrorInfo interface (models)

Validation Rules via XAML

WPF allows your rules to be encapsulated within a class, and to have the rule applied via XAML. You begin by defining a rule:

Code sample goes here

Your rule can then be applied by using object element syntax to declare your binding:

XAML code goes here

This will be enough to have error messages appear on screen:

Screenshot goes here

We will talk more about what you can do with validation rules later.

Throwing Exceptions in Setters

An easy way to perform validation in models is to throw an exception in the setters of your properties:

Code sample goes here

When you declare a binding, you can either use object element syntax, as per below:

XAML syntax

Or make use of a handy property that was introduced in .NET 3.5:

XAML syntax (shorter)

This approach is useful because it allows you to consolidate validation logic in your models, but it has a few drawbacks which we'll discuss later. A better approach to model validation is the IDataErrorInfo interface.

Implementing IDataErrorInfo

WPF in .NET 3.5 introduced IDataErrorInfo support out of the box. The implementation is quite simple:

Code sample goes here

As with model binding, you can either use object element syntax:

XAML sample here

Or a handy attribute that was introduced in .NET 3.5:

XAML sample (shorter)

How to display validation results

WPF makes it easy to display validation errors against a UI element.

Paul Stovell's Blog

Hello, I'm Paul Stovell

I'm a Brisbane-based software developer, and founder of Octopus Deploy, a DevOps automation software company. This is my personal blog where I write about my journey with Octopus and software development.

I write new blog posts about once a month. Subscribe and I'll send you an email when I publish something new.