2009-07-08 5 views
3

J'ai un objet de données qui implémente IDataErrorInfo mais la logique de validation est un peu lente. Pas si lent, mais assez lent, vous ne voulez pas l'appeler un grand nombre de fois. Dans mon application, une liste de ces objets s'affiche dans un contrôle DataGridView. La grille est en lecture seule et ne contiendra jamais que des objets de données valides, cependant DataGridView insiste pour appeler IDataErrorInfo.this [string columnName] pour chaque cellule de la grille qui rend la peinture très lente.Comment vous arrêtez DataGridView appelant IDataErrorInfo.this [string columnName] obtenir?

J'ai essayé de définir ShowCellErrors et ShowRowErrors sur false, mais il appelle toujours IDataErrorInfo.this [string columnName]. Des idées comment je l'arrête valider des objets que je connais sont valables?

Répondre

1

Comme une option bon marché ... peut-être un indicateur que vous pouvez définir sur votre objet (s) qui désactive la validation et retourne toujours "" des méthodes 2 IDataErrorInfo?

obj.ValidationEnabled = false; // etc 

Si c'est un problème majeur, vous pouvez introduire un pass-thru objet qui imite le type réel mais ne met pas en oeuvre IDataErrorInfo. Soit en codant manuellement une façade, soit avec une utilisation inventive de System.ComponentModel (vraisemblablement un ITypedList ou TypeDescriptionProvider, notez que cela ne vaudrait pas la peine pour un seul type - écrire une classe manuellement serait plus facile).

+0

Je l'avais considéré, mais espérais qu'il y avait un moyen plus facile. –

Questions connexes