Comment gérer l'exception dans le convertisseur de valeur afin que le message d'erreur personnalisé puisse s'afficher

J'ai une zone de texte qui est lié à une classe avec une propriété de type Timespan, et nous avons écrit une valeur de convertisseur pour convertir une chaîne en un laps de Temps.

Si un nombre est entré dans la zone de texte, je voudrais un message d'erreur personnalisé à afficher (plutôt que la valeur par défaut "de la chaîne d'entrée est dans le mauvais format").

Le convertisseur de code est:

    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");
        }
    }

J'ai mis 'ValidatesOnExceptions=True" dans le code XAML de liaison.

Cependant, j'ai trouver l'article MSDN suivant, ce qui explique pourquoi le ci-dessus ne fonctionnera pas:

"Le moteur de liaison de données ne permet pas de capturer des exceptions qui sont lancés par un utilisateur fourni par le convertisseur. Toute exception est levée par le Convertir méthode, ou toutes les exceptions qui sont levées par les méthodes que l'Convertir les appels de méthode, sont traitées comme des erreurs d'exécution"

J'ai lu que " ValidatesOnExceptions ne intercepter des exceptions dans TypeConverters, donc mes questions spécifiques:

  • Quand vous utilisez un TypeConverter sur une ValueConverter
  • En supposant un TypeConverter n'est pas la réponse à la question ci-dessus, comment puis-je afficher mon message d'erreur personnalisé dans l'INTERFACE utilisateur

source d'informationauteur sturdytree