我有一個SL4用戶控件。它包含一個DatePicker。該控件公開DateTime依賴屬性(不可爲空,因爲它是必填字段)。我將DatePicker的SelectedDate(可爲空值<DateTime>)綁定到{RelativeSource Self}的此DateTime屬性,爲雙向。除非在DatePicker中輸入空日期,否則此綁定將起作用。該綁定使用ValidatesOnExceptions設置,因此DatePicker的邊框變爲紅色,但在工具提示中它顯示「輸入的格式不正確」。但應該說這個領域是必需的。SilverLight需要日期選擇器驗證
我嘗試了一個自定義的IValueConverter,它用自定義文本引發了一個異常(ValidationException,FormatException,InvalidOperationException等等),但它們都以未處理的方式結束。
我知道我的控件可以實現INotifyDataErrorInfo,但問題是空值甚至沒有將它放到我的控件中,因爲我的DateTime不是可空的,所以沒有什麼可以驗證。
我可以輕鬆地做這件事情,沒有任何約束。或者通過綁定到我的控件中的一個隱藏的可爲空的Nulllable屬性,驗證此屬性是否爲空,並且公開另一個DateTime屬性。或者通過提供一個將null轉換爲DateTime.MinValue或其他東西的ValueConverter。
但是,這些方法似乎都是解決方法,我想要一個更好的解決方案。處理這個問題的最好方法是什麼?