【发布时间】:2015-02-21 21:59:38
【问题描述】:
如果我在此 DatePicker 中输入了无效日期,例如
20001 年 1 月 1 日(输入键)
我得到以下异常
“System.FormatException”类型的第一次机会异常发生在 mscorlib.dll
附加信息:字符串未被识别为有效的日期时间。
但似乎这是由绑定引发的,我找不到处理它的方法。
在调试中,我在屏幕上看到上述内容
打开堆栈跟踪,它说错误是在 SearchItem.Date1 get 上引发的
但问题是在那种情况下实际上并没有调用 get
如果我输入一个有效的日期,例如 2000 年 1 月 1 日,我会看到集合并被调用。
如果我输入无效日期,则无需设置。
我输入无效日期并按输入或失去焦点只是恢复到前一个日期并且不会引发异常。如果之前的日期为空,则它恢复为空。
如果用户输入有效日期,这对我来说是一个关键问题 然后输入一个无效的日期,DatePicker 只是恢复到最后一个有效日期。所以用户不知道日期没有改变。
问题是如何处理无效日期异常?
<DatePicker Width="140" DisplayDateStart="1/1/1990" DisplayDateEnd="12/31/2020"
SelectedDate="{Binding Path=Date1, Mode=TwoWay, ValidatesOnExceptions=True, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"/>
如果我拿出来
, ValidatesOnExceptions=True, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged
没有任何变化
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");
}
}
}
【问题讨论】:
-
这是
DatePicker、System.Windows.Controls.DatePicker吗?因为如果是的话,当我运行你的代码时不会抛出异常。 -
@Bahman_Aries 对我来说,错误的方向也不例外。我需要赶上一个无效的日期。
标签: wpf datepicker formatexception