Вы можете использовать ValidationRules.
Например, в моем случае, когда пользователь вводит недопустимое значение в десятичный столбец данных, вместо сообщения по умолчанию «Значение не может быть преобразовано», я могу переопределить его с помощью:
<DataGridTextColumn x:Name="Column5" Header="{x:Static p:Resources.Waste_perc}" Width="auto">
<DataGridTextColumn.Binding>
<Binding Path="Waste" ValidatesOnDataErrors="True" UpdateSourceTrigger="LostFocus">
<Binding.ValidationRules>
<myLib:DecimalRule />
</Binding.ValidationRules>
</Binding>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
и вот код для DecimalRule:
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
decimal convertedDecimal;
if (!decimal.TryParse((string)value, out convertedDecimal))
{
return new ValidationResult(false, "My Custom Message"));
}
else
{
return new ValidationResult(true, null);
}
}