J'ai une application WPF très simple dans laquelle j'utilise la liaison de données pour permettre l'édition de certains objets CLR personnalisés. Je souhaite maintenant mettre une validation d'entrée lorsque l'utilisateur clique sur Enregistrer. Cependant, tous les livres WPF que j'ai lus ne consacrent pas vraiment d'espace à ce problème. Je vois que vous pouvez créer des ValidationRules personnalisées, mais je me demande si cela serait excessif pour mes besoins.
Ma question est donc la suivante: existe-t-il un bon exemple d'application ou d'article quelque part qui illustre les meilleures pratiques pour valider les entrées utilisateur dans WPF?
la source
À partir de la documentation des modèles et pratiques de MS :
La documentation explique ensuite comment implémenter IDataErrorInfo et INotifyDataErrorInfo.
la source
Personnellement, j'utilise des exceptions pour gérer la validation. il nécessite les étapes suivantes:
l'astuce ici, est de se lier uniquement aux objets qui dérivent de DependencyObject. une implémentation simple de INotifyPropertyChanged ne fonctionnerait pas - il y a un bogue dans le framework, qui vous empêche d'accéder à la collection d'erreurs.
la source
Consultez également cet article . On suppose que Microsoft a publié sa bibliothèque d'entreprise (v4.0) à partir de ses modèles et pratiques où ils couvrent le sujet de validation, mais Dieu sait pourquoi ils n'ont pas inclus la validation pour WPF, donc le billet de blog vers lequel je vous dirige explique ce que l'auteur fait pour l'adapter. J'espère que cela t'aides!
la source
Vous pourriez être intéressé par l' exemple d'application BookLibrary de WPF Application Framework (WAF) . Il montre comment utiliser la validation dans WPF et comment contrôler le bouton Enregistrer en cas d'erreurs de validation.
la source
Si votre classe affaires est directement utilisée par votre interface utilisateur, il est préférable d'utiliser IDataErrorInfo car cela rapproche la logique de leur propriétaire.
Si votre classe métier est une classe stub créée par une référence à un service WCF / XmlWeb, vous ne pouvez / ne devez pas utiliser IDataErrorInfo ni lever Exception pour une utilisation avec ExceptionValidationRule. Au lieu de cela, vous pouvez:
la source