我有一个 WPF 应用程序,其中使用绑定到实体框架(带有 SQL Server)实体的日期字段的日期选择器。我将其绑定如下:
<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
因为我在其他地方使用它来评估业务逻辑。
To see what I mean, here is a form that uses the datepicker with a null value for the date, you can see the validation error:
调试时的输出窗口给出以下验证转换错误:
System.Windows.Data 错误:7:ConvertBack 无法转换值 ''
(输入“字符串”)。 BindingExpression:Path=dtComplete;
DataItem='job_BF0D6052EEADCDA3C2B6D1A174D77C322D5AB16A035F214705610767131A80F0'
(哈希码=17930557);目标元素是“DatePicker”
(名称='dtComplete');目标属性是“文本”(类型“字符串”)
FormatException:'System.FormatException:字符串未被识别为
有效的日期时间。在 System.DateTime.Parse(String s,
IFormatProvider 提供者)在 System.Convert.ToDateTime(字符串
值,IFormatProvider 提供者)位于
System.Convert.ChangeType(对象值,类型转换Type,
IFormatProvider 提供者)位于
System.Windows.Data.BindingExpression.ConvertBackHelper(IValueConverter
转换器、对象值、类型 sourceType、对象参数、
文化信息文化)'
在用户更改输入之前,有人可以帮助我消除此验证错误吗?
提前致谢
弄清楚了:
我绑定到 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}" />
现在,这按照我想要的方式运行,选择日期水印仍然存在,并且绑定日期值有效。现在一切都太明显了。简单修复
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)