J'ai une application RIA Silverlight 4 avec un type de données complexe en tant que modèle. Comme exemple familier, appelons-le aspnet_User qui a un objet membre appelé aspnet_Membership; aspnet_User a un membre appelé "UserName" et aspnet_Membership a un membre appelé "Email". Maintenant, en utilisant aspnet_User comme un contexte de données, je veux lier à tous les changements dans aspnet_User ou un aspnet_Membership attaché - c'est-à-dire que je veux montrer si un aspnet_User est 'dirty'. Le drapeau dirty devrait montrer si je change soit aspnet_User.UserName ou aspnet_Membership.Email. Auparavant, j'ai implémenté un Convertisseur et lié à l'EntityState sur un objet, et c'est bien pour montrer si des propriétés simples sont dirty mais EntityState n'est pas modifié lorsque des aspects du membre aspnet_Membership sont modifiés.
J'ai essayé d'implémenter une propriété appelée BubbledEntityState qui reflète un EntityState modifié sur aspnet_User ou aspnet_membership. Il est défini dans une classe partielle dans le projet Silverlight. Cela doit réagir aux événements PropertyChanged de EntityState sur aspnet_User ou son membre aspnet_Membership. J'ai donc essayé de gérer ces événements dans la méthode partielle OnCreated. Étrangement cependant, cela n'est pas appelé du tout. Voici la méthode: public partial class aspnet_User {
partial void OnCreated()
{
this.aspnet_Membership.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(aspnet_Membership_PropertyChanged);
this.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(aspnet_User_PropertyChanged);
}
... }
Je présume que les objets aspnet_User sont construits sur le serveur et ne sont pas 'reconstruits' lorsqu'ils sont reconstitués sur le client après que RIA ait effectué son appel WCF. Cela me semble curieux. Est-ce que je fais quelque chose de bizarre? Quelqu'un a une meilleure façon de gérer cela?