У меня есть текстовое поле, которое связано с классом с свойством типа 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");
}
}
Я установил 'ValidatesOnExceptions = True' в привязке XAML.
Однако я столкнулся с следующей статьей MSDN, которая объясняет, почему приведенное выше не будет работать:
"Механизм привязки данных не использует исключения, которые генерирует пользовательский преобразователь. Любое исключение, которое вызывается методом Convert или любые неперехваченные исключения, которые генерируются методами, которые вызывает метод Convert, обрабатываются как ошибки времени выполнения"
Я читал, что "ValidatesOnExceptions действительно ломает исключения в TypeConverters, поэтому мои конкретные вопросы:
- Когда вы используете TypeConverter над ValueConverter
- Предполагая, что TypeConverter не является ответом на проблему выше, как я могу отобразить свое пользовательское сообщение об ошибке в пользовательском интерфейсе