绑定值为null时,将显示WPF日期选择器验证错误

J K*_*ing 4 .net wpf entity-framework

我有一个WPF应用程序,我使用绑定到实体框架(带有SQL服务器)实体的日期字段的日期选择器.我把它绑定如下:

<DatePicker x:Name="dtComplete" Style="{StaticResource FTC_DatePicker}" Grid.Column="2" Grid.Row="7" Grid.ColumnSpan="3"                                            
Text="{Binding dtComplete, Mode=TwoWay, ValidatesOnDataErrors=True}"/>
Run Code Online (Sandbox Code Playgroud)

绑定工作正常,可以更新到实体.

我的问题是,当底层数据库字段为空时,我得到了我想要的选择日期水印,但该水印正在被验证并且返回不是日期格式.我想保留水印,但在用户更改输入之前没有验证触发器.另外,我想保留,ValidatesOnDataErrors=True因为我在其他地方使用它来评估业务逻辑.

要查看我的意思,这里是一个使用datepicker和日期为空值的表单,您可以看到验证错误: wpf datepicker验证错误

调试时的输出窗口给出以下验证转换错误:

System.Windows.Data错误:7:ConvertBack无法转换值''(类型'String').BindingExpression:路径= dtComplete; 的DataItem = 'job_BF0D6052EEADCDA3C2B6D1A174D77C322D5AB16A035F214705610767131A80F0'(的HashCode = 17930557); target元素是'DatePicker'(Name ='dtComplete'); target属性为'Text'(类型'String')FormatException:'System.FormatException:String未被识别为有效的DateTime.在System.DateTime.Parse(字符串s的IFormatProvider提供商)在System.Convert.ToDateTime(字符串值,的IFormatProvider提供商)在System.Convert.ChangeType(对象值,类型conversionType,的IFormatProvider提供商)在System.Windows.Data.BindingExpression .ConvertBackHelper(IValueConverter转换器,对象值,类型sourceType,Object参数,CultureInfo文化)'

在用户更改输入之前,有人可以帮助我摆脱此验证错误吗?

提前致谢

J K*_*ing 6

弄清楚了:

我绑定了hte datePicker的文本值,所以它试图将水印文本验证为日期,但我真正应该做的是绑定到selectedDate属性,如下所示:

<DatePicker x:Name="dtComplete" Style="{StaticResource FTC_DatePicker}" Grid.Column="2" Grid.Row="7" Grid.ColumnSpan="3"                                                                                        
 SelectedDate="{Binding dtComplete, Mode=TwoWay, ValidatesOnDataErrors=True}" />
Run Code Online (Sandbox Code Playgroud)

这现在按我的意思行事,选择日期水印仍然存在,并且绑定日期值有效.它现在太明显了.简单的修复