我正在使用定制的DateTimeToString : IValueConverter
在我的ConvertBack方法中,当转换失败时,我会抛出异常,但它不会显示为验证失败(这是一个未处理的应用程序异常),我希望将其显示为验证问题(红色边框)。
简而言之,当它显示验证消息(“输入字符串的格式不正确”)时,我希望它像DateTime+Texbox一样工作,但使用我的自定义IValueConverter。
发布于 2012-03-29 06:47:24
您将需要使用如下所示的TryParse或TryParseExact方法,如果您使用的是Parse方法,则需要捕获FormatException。
DateTime result;
if (DateTime.TryParseExact(dateString, dateFormat, culture, DateTimeStyles.None, out result))
{
return result;
}
else
{
return new ValidationResult("Date string format error");
}发布于 2012-08-17 04:54:40
刚刚发现这是ivalueconverter的已知行为。这是因为ivalueConverter不是Silverlight中“验证管道”的一部分。因为ivalueConverter在到达验证逻辑之前会抛出异常,所以它不会被视为验证错误。对于同样的问题,也有a post in Silverlight forum。有人得了started a request at dotnet.uservoice。就我个人而言,我认为这应该得到修复/改进,因为转换器是验证错误的逻辑位置。毕竟,我们得到一个转换错误的频率是多少?很多!
发布于 2011-06-22 20:14:37
虽然使用ValueConverters是可行的,但我不推荐使用它。
最好看看MVVM-Pattern (也请参阅:Thought: MVVM eliminates 99% of the need for ValueConverters )。然后,您可以在ViewModels中实现IDataErrorInfo,验证就会变得尽可能简单。
根据我的经验,继续使用ValueConverts只会让你更头疼。
https://stackoverflow.com/questions/6439527
复制相似问题