2010-11-17 13 views
1

Je suis relativement nouveau dans les implémentations WCF et j'ai des difficultés avec certaines liaisons de données. A savoir, j'ai 2 boutons radio dans mon application Silverlight (les propriétés sont liées à des propriétés dans l'un de mes contrats de données). J'ai également une zone de texte masquée qui change en fonction du bouton radio sélectionné. Le texte "Masked Textbox" est lié à une autre propriété du contrat de données de la WCF. Mon processus de pensée consistait à implémenter l'interface "INotifyPropertyChanged" sur le contrat de données et à utiliser l'événement "OnPropertyChanged" qui déclencherait le textbox masqué pour changer son "masque" en fonction du bouton radio sélectionné. Eh bien, cela n'a pas fonctionné aussi bien que je suis incapable d'obtenir l'événement OnPropertyChanged fonctionnant correctement à partir de la WCF.Evénement OnPropertyChanged dans WCF DataContract

Avez-vous des solutions de contournement à ce problème, espérons-le trivial?

Merci beaucoup à l'avance, -Tom

+1

Le contrat de données est-il déclaré sur un assembly partagé? Avez-vous vérifié que lors de la création de la référence de service, un nouveau type de contrat de données n'est pas créé? – Anero

Répondre

1

J'ai obtenu ce dont j'avais besoin en créant une classe wrapper côté client (qui étendait le contrat de données de la WCF). J'ai ensuite implémenté l'interface INotifyPropertyChanged sur cette classe wrapper. Ce n'est peut-être pas la plus jolie solution de contournement, mais elle fait le travail.

2

Votre phrase « Je suis incapable d'obtenir l'événement OnPropertyChanged fonctionne correctement à partir du Fonds de roulement. » déclenche quelques cloches d'avertissement.

Les données sont-elles modifiées sur le client ou le serveur?

Vous devez comprendre que si un service WCF retourne un objet au client, le client dispose d'une copie de cet objet, pas une référence . Tous les événements générés par la copie de l'objet par le serveur ne seront pas reçus par le client.

Si vous souhaitez que les notifications de données soient déclenchées par le serveur et reçues par le client, vous devrez implémenter cette fonction à l'aide d'une liaison bidirectionnelle (bidirectionnelle). Vous ne pouvez pas implémenter des notifications de serveur à client en utilisant des événements .NET (au moins, pas pour la partie de communication distribuée).