3

私はどういうわけかそれを間違っていますが、私はそれを理解することはできません:

私はこのようなモデルを持っています:

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 のエラーを登録するにはどうすればよいですか?

4

0 に答える 0