SilverLight需要日期选择器验证

SilverLight需要日期选择器验证,silverlight,validation,silverlight-4.0,Silverlight,Validation,Silverlight 4.0,我有一个SL4用户控件。它包含一个日期选择器。该控件公开DateTime依赖项属性(不可为null,因为它是必填字段)。我已经将DatePicker的SelectedDate(可为null)绑定到{RelativeSource Self}的这个DateTime属性,作为双向绑定。除非我在日期选择器中输入空日期,否则此绑定有效。绑定是使用ValidatesOnExceptions设置的,因此DatePicker的边框变为红色,但在工具提示中显示“输入格式不正确”。但应该说,该字段是必需的 我尝试了

我有一个SL4用户控件。它包含一个日期选择器。该控件公开DateTime依赖项属性(不可为null,因为它是必填字段)。我已经将DatePicker的SelectedDate(可为null)绑定到{RelativeSource Self}的这个DateTime属性,作为双向绑定。除非我在日期选择器中输入空日期,否则此绑定有效。绑定是使用ValidatesOnExceptions设置的,因此DatePicker的边框变为红色,但在工具提示中显示“输入格式不正确”。但应该说,该字段是必需的

我尝试了一个自定义的IValueConverter,它抛出一个带有自定义文本的异常(ValidationException、FormatException、InvalidOperationException.etc),但它们都没有得到处理

我知道我的控件可以实现INotifyDataErrorInfo,但问题是null值甚至没有进入我的控件,因为我的DateTime不可为null,所以没有什么可验证的

我可以很容易地做这件事,没有任何约束力。或者通过绑定到控件中隐藏的可为null的属性,验证此属性是否为null,并公开另一个DateTime属性。或者提供一个ValueConverter,将null转换为DateTime.MinValue或其他内容


但这些方法似乎都是权宜之计,我希望有更好的解决方案。处理此问题的最佳方法是什么?

基本上,您必须将要绑定的日期选择器的值设置为可为null的日期时间,即使null不是有效值


然后,您只需依赖验证逻辑,以确保应用程序在值为null时不允许处理/存储/whateverd。

提交到Connect,谢谢。