Say you have a form, into which the user inputs data. You want to have an 'age' field, which is bound to a property in your ViewModel. That 'age' field should be a TextBox. You want to be able to display a nice validation message if the user inputs something which isn't a number here, and you also want to check that if they did input a number, that number is > 0.
Your first instinct is probably to have a public int Age { get; set; }
property in your ViewModel, and bind the TextBox to this. However, this is a bit painful - if the user enters something which isn't a number into the TextBox, the assignment to the property will fail (you'll get errors in the Output window), but your ViewModel won't know that this assignment failed, so it can't display a nice "Not a valid number message".
Another approach is to make the property nullable - public int? Age { get; set; }
, and introduce a converter which converts invalid values to null. This lets the ViewModel know that something went