J'ai travaillé avec WPF et le modèle MVVM pendant un moment maintenant. J'ai du mal à faire fonctionner la validation de manière "normale":Validation de formulaire dans WPF
1) J'implémente l'interface IDataErrorInfo dans mon ViewModel. Le XAML ressemble à:
<TextBox Grid.Column="1"
Grid.Row="1"
Text="{Binding Path=ProjectKey, ValidatesOnDataErrors=True, UpdateSourceTrigger=LostFocus}" />
Le problème ici est que si les déclencheurs LostFocus et PropertyChanged sont utilisés, la zone de texte est validée avant que l'utilisateur jamais onglets de ce contrôle. Cela signifie que si je valide des champs vides, l'utilisateur verra beaucoup de rouge lors de la première ouverture du formulaire. Idéalement, l'entrée ne sera validée qu'après le premier "focus perdu" ou "changement de propriété", ou une fois que le bouton "Soumettre" est cliqué.
2) L'autre problème est la validation à la fin lorsque l'utilisateur clique sur "Envoyer". Il y a certaines choses que vous voulez valider juste avant de soumettre à la base de données, telles que les doublons. Je comprends que je peux utiliser UpdateSourceTrigger = Explicit et appeler la méthode UpdateSource sur tous les contrôles. Je me demande s'il existe un moyen approprié de le faire dans le modèle MVVM. Il semble que ce code ne devrait pas être dans le ViewModel car il est très spécifique à View ...
Toutes les idées seraient super. J'ai cherché beaucoup semblent en ligne mais ne peut pas trouver la bonne solution ...
http://stackoverflow.com/questions/2821998/how-can-i-get-wpf-to-not-display-validation-errors-upon-initial-display-of-contro/2829884#2829884 pourrait résoudre les deux problèmes – nash