2010-06-03 6 views
1

Ok, cela devrait être une chose très simple à faire, et il me manque quelque chose ou je me trompe.Marquer un DataForm.DataField Silverlight comme non valide?

faits:

  1. Silverlight 4, en utilisant la boîte à outils et à l'aide des formulaires de données/DataFields, mais pas en utilisant un résumé de validation. À l'aide d'un formulaire de données modélisé, utilisez un nouveau formulaire d'utilisateur simple avec les champs habituels tels que nom d'utilisateur, prénom, etc., ainsi que Mot de passe et Confirmer le mot de passe.

  2. Je veux valider de sorte que s'ils éditent un utilisateur existant, et que les champs du mot de passe soient vides, laissez-les passer. Sinon, assurez-vous que les mots de passe sont les mêmes. (Cela fonctionne déjà en utilisant un validateur personnalisé de niveau classe sur mon modèle.)

  3. Si la validation échoue en # 3, alertez l'utilisateur en mettant les indices habituels dans le champ Mot de passe. (Bordure rouge, message si vous cliquez dans le champ)

Je peux tout faire maintenant à # 3. Mais si l'erreur se produit, alors l'erreur est montrée comme une erreur de forme, pas une erreur de champ (ce qui est logique puisque la validation est sur la classe, pas sur la propriété). Je ne peux pas trouver un moyen de marquer mon champ pour montrer l'erreur. Comme je n'utilise pas de résumé de validation (pour des raisons de conception), l'erreur n'apparaît jamais à l'utilisateur. Est-ce que quelqu'un d'autre a fait cela, ou peut-il m'envoyer un exemple de formulaire de données avec des champs de mot de passe qui n'utilisent pas de résumé de validation pour que je puisse voir comment ils l'ont résolu?

Mes deux options actuelles que je vois sont de marquer manuellement le champ de données moi-même. OU, je vais construire ma propre méthode d'affichage des erreurs de forme complète qui ne répète pas les erreurs comme le fait le résumé de validation. (IE, je besoin d'un résumé de validation qui ne montre que des erreurs de forme - pas d'erreurs de terrain.)

Merci

+0

Je suis confronté à un problème similaire. Cependant j'utilise le "formulaire d'inscription d'utilisateur" et j'essaye de le faire ainsi un admin peut choisir de changer le mot de passe, la question de mot de passe, et la réponse de l'utilisateur. La logique devrait être que si les champs (l'un ou l'autre de ces 4 champs) sont remplis, ils doivent tous exister. Seriez-vous prêt à publier le code qui montre comment supprimer un champ de l'événement de validation? Ce serait vraiment utile! – bleepzter

Répondre

3

Ok, je l'ai résolu ce problème. Voici quelques conseils:

  1. Dans mon XAML de code .cs, je validais mon objet en appelant TryValidate sur mon objet. Ce n'est pas une bonne idée si vous n'utilisez PAS les boutons de commande DataForm intégrés. Si vous utilisez vos propres boutons personnalisés, veillez à appeler la méthode DataForm.ValidateItem() pour vous assurer que toutes les erreurs sont correctement renvoyées au ValidationSummary. (Dans mon cas, rien ne se rendait à la validation puisque le formulaire ne permettait pas la validation.)

  2. Vous pouvez indiquer à ValidationSummary d'afficher uniquement les erreurs de niveau objet. (Erreurs de propriété montrent encore, mais seulement sur le terrain.) Pour ce faire assigner comme ceci:

    myDataform.ValidationSummary.Filter = ValidationSummaryFilters.ObjectErrors;

Voir les ValidationSummaryFilters pour plus d'informations.

Cela a fonctionné pour moi. Ma validation d'objet apparaîtrait dans le résumé de validation et les erreurs de propriété uniquement sur les propriétés. Maintenant, j'ai juste besoin de styliser le résumé de validation de la façon dont je veux que cela fonctionne mieux pour mon design.