首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IValueConverter和异常验证

IValueConverter和异常验证
EN

Stack Overflow用户
提问于 2011-06-22 20:06:49
回答 4查看 4.8K关注 0票数 8

我正在使用定制的DateTimeToString : IValueConverter

在我的ConvertBack方法中,当转换失败时,我会抛出异常,但它不会显示为验证失败(这是一个未处理的应用程序异常),我希望将其显示为验证问题(红色边框)。

简而言之,当它显示验证消息(“输入字符串的格式不正确”)时,我希望它像DateTime+Texbox一样工作,但使用我的自定义IValueConverter。

EN

回答 4

Stack Overflow用户

发布于 2012-03-29 06:47:24

您将需要使用如下所示的TryParseTryParseExact方法,如果您使用的是Parse方法,则需要捕获FormatException

代码语言:javascript
复制
DateTime result;
if (DateTime.TryParseExact(dateString, dateFormat, culture, DateTimeStyles.None, out result))
{
    return result;
}
else 
{
    return new ValidationResult("Date string format error");
}
票数 7
EN

Stack Overflow用户

发布于 2012-08-17 04:54:40

刚刚发现这是ivalueconverter的已知行为。这是因为ivalueConverter不是Silverlight中“验证管道”的一部分。因为ivalueConverter在到达验证逻辑之前会抛出异常,所以它不会被视为验证错误。对于同样的问题,也有a post in Silverlight forum。有人得了started a request at dotnet.uservoice。就我个人而言,我认为这应该得到修复/改进,因为转换器是验证错误的逻辑位置。毕竟,我们得到一个转换错误的频率是多少?很多!

票数 4
EN

Stack Overflow用户

发布于 2011-06-22 20:14:37

虽然使用ValueConverters是可行的,但我不推荐使用它。

最好看看MVVM-Pattern (也请参阅:Thought: MVVM eliminates 99% of the need for ValueConverters )。然后,您可以在ViewModels中实现IDataErrorInfo,验证就会变得尽可能简单。

根据我的经验,继续使用ValueConverts只会让你更头疼。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6439527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档