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
Vous devez vous connecter pour publier un commentaire.
Je voudrais utiliser un
Règle
pour que, de cette façon, le convertisseur peut être sûr que la conversion fonctionne puisqu'elle n'est appelée que si la validation réussit, et vous pouvez faire usage de la propriété attachéeValidation.Les erreurs
qui contiendra les erreurs de votreValidationRule
crée si l'entrée n'est pas la façon dont vous le souhaitez.par exemple (note l'info-bulle de liaison)
J'ai utilisé de la validation et de convertisseur d'accepter
null
et les numéros deXAML:
Code Derrière:
ValidationRule :
Converter :
Vous ne devriez pas lancer des exceptions du convertisseur. Je voudrais mettre en œuvre IDataErrorInfo et de mettre en œuvre l'Erreur et de la Chaîne. Veuillez vérifier http://www.codegod.biz/WebAppCodeGod/WPF-IDataErrorInfo-and-Databinding-AID416.aspx.
HTH daniell