2010-05-09 3 views
4

J'ai créé un service WCF RIA que je souhaite utiliser avec une application WPF. J'ai ajouté plusieurs règles de validation System.ComponentModel.DataAnnotations sur les méta-données des entités, qui fonctionnent parfaitement sur le serveur lorsque j'appelle .SubmitChanges (changeSet) du client. J'aimerais aussi valider mes entités du côté client avant de pouvoir résumer mes modifications sur le serveur mais je n'ai aucune idée de la façon de le faire. Toute aide à cet égard serait grandement appréciée! Merci ...Comment effectuer une validation côté client dans WPF à l'aide des services RIA WCF

+0

duplication possible de [Comment utiliser WCF RIA SERVICES avec l'application WPF?] (Http://stackoverflow.com/questions/2551258/how-to-use-wcf-ria-services-with-wpf-application) – Shimmy

Répondre

2

Pour autant que je sache, il n'y a pas de services WCF RIA pour WPF (bien que je serais heureux d'avoir tort, car j'attends cela ...), donc vous devez faites le travail côté client vous-même. Utilisez le VisualTreeHelper pour parcourir tous les contrôles de votre formulaire et récursivement si le contrôle est un panneau. Pour chaque contrôle, avoir une liste de propriétés potentiellement liées (je suppose qu'il n'y en a qu'une dans ce cas). Par exemple, un TextBox aura potentiellement sa propriété TextBoxProperty, un CheckBox aura sa propriété IsCheckedProperty. Utilisez BindingOperation.GetBinding pour obtenir une instance de liaison, qui vous donne les propriétés Source et Path. Utilisez maintenant la réflexion sur la source pour voir si une annotation de données y est associée. Si c'est le cas, vérifiez-le.

Oui, c'est beaucoup de code.

+0

Merci pour la réponse rapide! Malheureusement, mon application n'utilise pas de liaison. Je crée un ou plusieurs ChangeSetEntry à la main, puis je les envoie sur le réseau en appelant SaveChanges (changeSet). Je voudrais valider les données AVANT qu'il ne passe par-dessus le fil. Malheureusement, comme vous l'avez dit, il semble que je sois S.O.L. Quoi qu'il en soit, merci encore pour votre aide ... –

+0

J'ai utilisé la liaison comme moyen d'obtenir l'objet source et ses membres. À partir d'un ChangeSetEntry, vous avez accès à l'entité modifiée et à ses valeurs d'origine. Les comparer vous donnerait les membres modifiés et donc, par la réflexion, vous donnerait les annotations de données à vérifier. – Timores

+0

Veuillez voter Veuillez voter [ici] (http://dotnet.uservoice.com/forums/57026-wcf-ria-services/suggestions/746156-support-for-wpf) et [ici] (https: // connect .microsoft.com/VisualStudio/commentaires/détails/621763/support-wcf-ria-service-for-wpf). – Shimmy

Questions connexes