私はどういうわけかそれを間違っていますが、私はそれを理解することはできません:
私はこのようなモデルを持っています:
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」のような無効な日付に変更した場合、その値はその人に伝わらず、無効にはなりません。ただし、生年月日テキストボックスの周りに赤い境界線が表示されます。無効なテキスト (ユーザーが変更する) を保持し、IDataErrorInfo のエラーを登録するにはどうすればよいですか?