Как обрабатывать исключение в преобразователе значений, чтобы это настраиваемое сообщение об ошибке может отображаться

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

  • Когда вы бы использовали TypeC onverter через ValueConverter
  • Предполагая, что TypeConverter не является ответом на проблему выше,как я могу отобразить свое собственное сообщение об ошибке в пользовательском интерфейсе
16
задан slugster 25 May 2011 в 11:52
поделиться