Bonjour,
J'essaie en vain de trouver un moyen d'afficher des erreurs de cohérence avec l'ErrorSummary ou sur le "control" en question directement, mais dès le moment de l'affichage, pas seulement après modification par l'utilisateur.
Les étapes sont les suivantes:
- je crée un objet métier. Celui-ci comporte une règle de validation qui dit que tant que le nom n'est pas défini, il y a une erreur de cohérence. Lorsque je le crée, le nom n'est pas défini, mon objet métier est donc en erreur de cohérence (je n'autorise la sauvegarde que qd l'erreur de cohérence est corrigée par l'utilisateur, càd le nom rempli)
- l'objet métier est encapsulé dans un view model qui implémente INotifyDataErrorInfo.
- dans la vue, je mets à jour mon datacontext pour pointer sur mon view model. Les données par défaut apparaissent, mais comme le nom n'est pas défini, et que je ne vais pas en définir un par défaut dans l'objet métier comme pour d'autres champs, le textbox est laissé vide. Par contre je m'attendais à avoir l'apparition de mon erreur dans l'errorsummary. Il n'en est rien. Par contre ensuite si j'entre du texte dans le textbox "prénom" , l'erreur summary se met à jour...
J'ai vérifié avec le debugger, toutes mes valeurs d'erreurs sont présentes correctement dès le début.
J'ai bien essayé de forcer la mise à jour, lors du changement de datacontext grâce à cette solution, mais ça n'y fait rien!!
Un truc du genre:
Je crois que les controls ont étés implémentés de telle manière qu'une erreur de cohérence ne peut apparaître qu'après mise à jour par l'utilisateur (cf. la méthode avec les exceptions au niveau du "setter"). Me trompe-je? Auriez-vous des idées ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 BindingExpression be = LastNameTextBox.GetBindingExpression(TextBox.TextProperty); be.UpdateSource();
Merci,A+
Christophe
Partager