我有一个文本框,绑定到一个具有TimeSpan类型属性的类,并编写了一个值转换器,将字符串转换为TimeSpan。
如果在文本框中输入非数字内容,我希望显示自定义错误消息(而不是默认的“输入字符串格式不正确”)。
转换器代码如下:
public object ConvertBack(
object value,
Type targetType,
object parameter,
CultureInfo culture)
{
try
{
int minutes = System.Convert.ToInt32(value);
return new TimeSpan(0, minutes, 0);
}
catch
{
throw new FormatException("Please enter a number");
}
}
我已在 XAML 绑定中设置了 'ValidatesOnExceptions=True'。但是,我遇到了以下 MSDN 文章,解释了为什么上述内容不起作用:
“数据绑定引擎不会捕获由用户提供的转换器抛出的异常。由 Convert 方法抛出的任何异常,或者 Convert 方法调用的方法抛出的任何未捕获异常,都将被视为运行时错误。”
我已经阅读过 'ValidatesOnExceptions 在 TypeConverters 中可以捕获异常,因此我的具体问题如下:
- 什么情况下需要使用 TypeConverter 而不是 ValueConverter
- 假设 TypeConverter 不是上述问题的答案,如何在 UI 中显示自定义错误消息