我正在使用自定义DateTimeToString:IValueConverter
在我的ConvertBack方法中,我在转换失败时抛出异常,但它没有显示为验证失败(这是一个未处理的应用程序异常),我想将其显示为验证问题(红色边框).
简而言之,我希望它在DateTime + Texbox中显示验证消息("输入字符串格式不正确"),但使用我的自定义IValueConverter.
虽然我原则上同意winSharp93的回答/sf/answers/450773431/,但我发现如果从ConvertBack方法返回ValidationResult,您将获得预期的验证行为.
您将需要使用如下所示的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");
}
Run Code Online (Sandbox Code Playgroud)
尽管可以使用 ValueConverters,但我不推荐它。
最好看一下MVVM 模式(另请参阅:思想:MVVM 消除了 99% 对 ValueConverters 的需求)。然后,您可以IDataErrorInfo
在 ViewModel 中实现,并且验证变得尽可能简单。
根据我的经验,继续使用 ValueConverts 只会让您更加头疼。