W tym DatePicker gdybym wpisać błędną datę takich jak
1/1/20001 (enter)
otrzymuję następujący wyjątekDatePicker System.FormatException
Pierwsza szansa wyjątek typu ' System.FormatException 'wystąpił w mscorlib.dll
Dodatkowe informacje: Ciąg nie został rozpoznany jako poprawny obiekt DateTime.
Wygląda na to, że jest wyrzucany przez wiązanie i nie mogę znaleźć sposobu, aby sobie z tym poradzić.
W debug uzyskać powyższe na ekranie
włączony ślad stosu i mówi, że błąd jest generowany na SearchItem.Date1 dostać
Ale problemem jest to, że nie jest get rzeczywiście nazywa się w tej sytuacji
Jeśli wprowadzę poprawną datę, taką jak 1/1/2000, zobaczę oba zestawy i otrzymam wywołanie.
Po wprowadzeniu i niepoprawnej dacie nie ma połączenia z ustawieniem.
Po wprowadzeniu i niepoprawnej dacie i naciśnięciu klawisza Enter lub utracona fokus wraca do wcześniejszej daty i nie zgłasza wyjątku. Jeśli poprzednia data była pusta, wraca do wartości null.
Jeśli jest to dla mnie poważny problem, to jeśli użytkownik wprowadzi poprawną datę , a następnie wprowadzi nieprawidłową datę, DatePicker właśnie powróci do ostatniej prawidłowej daty. Użytkownik nie wie, że data się nie zmieniła.
Pytanie brzmi, w jaki sposób mogę obsłużyć niepoprawny wyjątek daty?
<DatePicker Width="140" DisplayDateStart="1/1/1990" DisplayDateEnd="12/31/2020"
SelectedDate="{Binding Path=Date1, Mode=TwoWay, ValidatesOnExceptions=True, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"/>
Gdybym wyjąć
, ValidatesOnExceptions=True, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged
nic się nie zmieni
private DateTime? date1;
public DateTime? Date1
{
get
{
try
{
return date1;
}
catch (Exception ex)
{
return (DateTime?)null;
throw;
}
}
set
{
if (date1 != value)
{
date1 = value;
NotifyPropertyChanged("Date1");
}
}
}
Czy to 'DatePicker',' System.Windows.Controls.DatePicker'? ponieważ jeśli tak, to żaden wyjątek nie został zgłoszony, gdy uruchomiłem twój kod. –
@Bahman_Aries nie jest wyjątkiem dla mnie. Muszę złapać nieprawidłową datę. – Paparazzi