我有一个WPF应用程序,其中我使用绑定到实体框架(使用SQL Server)实体的日期字段的日期选择器。我把它绑定如下:当绑定值为空时出现WPF datepicker验证错误
<DatePicker x:Name="dtComplete" Style="{StaticResource FTC_DatePicker}" Grid.Column="2" Grid.Row="7" Grid.ColumnSpan="3"
Text="{Binding dtComplete, Mode=TwoWay, ValidatesOnDataErrors=True}"/>
绑定工作正常,可以更新到实体。
我的问题是,当底层数据库字段为空时,我得到选择一个日期水印,这是我想要的,但该水印正在验证并返回为不是日期格式。我想保留水印,但直到用户更改输入时才会有验证触发器。另外,我想保留ValidatesOnDataErrors=True
,因为我在其他地方使用它来评估业务逻辑。
要明白我的意思,这里是一个使用日期选择器与日空值形式,你可以看到验证错误:
输出窗口时调试提供了以下验证转换错误:
System.Windows.Data Error: 7 : ConvertBack cannot convert value '' (type 'String'). BindingExpression:Path=dtComplete; DataItem='job_BF0D6052EEADCDA3C2B6D1A174D77C322D5AB16A035F214705610767131A80F0' (HashCode=17930557); target element is 'DatePicker' (Name='dtComplete'); target property is 'Text' (type 'String') FormatException:'System.FormatException: String was not recognized as a valid DateTime. at System.DateTime.Parse(String s, IFormatProvider provider) at System.Convert.ToDateTime(String value, IFormatProvider provider) at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) at System.Windows.Data.BindingExpression.ConvertBackHelper(IValueConverter converter, Object value, Type sourceType, Object parameter, CultureInfo culture)'
有人能帮我摆脱这个验证错误,直到用户改变输入吗?
在此先感谢
感谢您的回复,“选择日期”文本是内置于控件中的“水印”。如果不重写日期选择器类并更改我希望避免的.NET代码中的水印值,就不能更改它。 – 2013-03-08 17:43:19