我有一個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