У меня есть текстовое поле, которое привязано к классу со свойством типа 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 не является решением вышеупомянутой проблемы, как я могу отобразить свое пользовательское сообщение об ошибке в пользовательском интерфейсе