2010-03-16 14 views
3

Deux fonctions doivent être implémentées, et je me demande quel type de validation je dois faire sur les entrées et comment gérer les erreurs.Quelle est la meilleure pratique pour la gestion des erreurs WPF ValueConverter?

Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert 

End Function 

Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack 

End Function 

Je dois vérifier si le type de valeur et le type de paramètre sont ce que je me attends.

Dans le cas contraire, devrais-je ne rien retourner et attraper un mauvais comportement dans un autre endroit? Ou devrais-je jeter ici une exception ou une affirmation?

Y a-t-il des pratiques exemplaires ou suggérées ici?

Répondre

5

Personnellement, je vérifie le type et la valeur, puis le convertir. Si pour une raison quelconque, il ne peut pas être converti alors je retourne simplement value non converti. Je ne jette aucune exception ou je ne fais aucune journalisation - la plupart du temps, il est facile de voir si une conversion a échoué parce que vous ne voyez pas l'élément attendu dans l'interface utilisateur. Les erreurs de journalisation dans un convertisseur peuvent être assez coûteuses, d'où je l'évite. La liaison de données (habituellement) échoue silencieusement (j'ai eu la liaison avec un convertisseur jeter un grand ajustement massif une fois dans Silverlight), vous pouvez vérifier la fenêtre de sortie pour toutes les erreurs, et il est assez simple de battre un point d'arrêt conditionnel dans le convertisseur si nécessaire pour déboguer des problèmes.

+0

Je pense que je vais suivre votre approche, merci – Drake

+0

Étudiez cela, et il semble que la meilleure façon. Vous pouvez utiliser un Style DataTrigger pour examiner le type renvoyé par la liaison et gérer différemment les données brutes/converties. – Will

0

Je voulais juste savoir pourquoi vous avez besoin d'attraper une exception dans le convertisseur? Avez-vous un exemple? À mon avis, cela ne devrait pas être nécessaire, et avec quelque chose comme les types NULL, ceux-ci devraient être traités correctement dans le convertisseur, car tout le reste devrait être géré avant l'appel du convertisseur. I.e. Si l'utilisateur entre une chaîne dans un champ numérique, elle doit être détectée par la validation et non par le convertisseur.