Я как-то не так делаю, но не могу понять:
У меня есть такая модель:
public class Person : IDataErrorInfo {
public DateTime Birthdate {
get { return _birthdate; }
set {
if (!Valid(value))
AddError("Birthdate", "Birthdate not valid");
_birthdate = value;
}
}
}
ValueConverter, как это:
public class DateToStringConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
return date.Date.ToShortDateString();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
DateTime result;
if (DateTime.TryParse(text, out result))
{
return result;
}
return DependencyProperty.UnsetValue;
}
}
И такой вид:
<TextBox Text="{Binding Person.Birthdate,
Mode=TwoWay,
Converter={StaticResource DateToStringConverter},
ValidatesOnDataErrors=True}" />
Если кто-то изменяет действительную дату, такую как «1.1.1950», на недопустимую дату, такую как «1.1.abc», значение не передается Person и не делает его недействительным. Но отображается красная рамка вокруг текстового поля даты рождения. Как я могу сохранить недопустимый текст (который будет изменен пользователем) и зарегистрировать ошибку для IDataErrorInfo?