ValidatesOnDataError используется для проверки бизнес-правил в соответствии с вашими моделями представлений и будет проверяться только в случае успешного связывания.
ValidatesOnExceptions необходимо применять вместе с ValidatesOnDataError для обработки тех сценариев, в которых wpf не может выполнить привязку из-за несоответствия типов данных. Допустим, вы хотите привязать TextBox к свойству Age (целое число) в модели представления
<TextBox Text="{Binding Age, ValidatesOnDataErrors=true, UpdateSourceTrigger=PropertyChanged}" />
Если пользователь вводит недопустимую запись, набирая алфавиты, а не числа как возраст, скажем, xyz, привязка данных wpf будет молча игнорировать значение, поскольку не может связать xyz с возрастом, и ошибка привязки будет потеряна, если привязка не будет украшена ValidatesOnExceptions
<TextBox Text="{Binding Age, ValidatesOnDataErrors=true, ValidatesOnExceptions="True", UpdateSourceTrigger=PropertyChanged}" />
ValidatesOnException использует обработку исключений по умолчанию для ошибок привязки с использованием ExceptionValidationRule, приведенный выше синтаксис является краткой формой для следующего
<TextBox>
<TextBox.Text>
<Binding Path="Age" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="True">
<Binding.ValidationRules>
<ExceptionValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
Вы можете определить свои собственные правила для проверки в соответствии с пользовательским вводом, наследуя от ValidationRule и реализуя метод Validate, NumericRule в следующем примере
<TextBox.Text>
<Binding Path="Age" ValidatesOnDataErrors="True">
<Binding.ValidationRules>
<rules:NumericRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
Правила проверки должны быть общими и не привязанными к бизнесу, так как последующие действия выполняются через IDataErrorInfo и ValidatesOnDataError.
Приведенный выше синтаксис является довольно запутанным по сравнению с имеющимся у нас синтаксисом однострочного связывания. Благодаря реализации ValidationRule в качестве присоединенного свойства синтаксис может быть улучшен, и вы можете взглянуть на него здесь