モデルとして複雑なデータ型を持つRIASilverlight4アプリがあります。おなじみの例として、aspnet_Membershipというメンバーオブジェクトを持つaspnet_Userと呼びましょう。aspnet_Userには「UserName」というメンバーがあり、aspnet_Membershipには「Email」というメンバーがあります。ここで、aspnet_Userをデータコンテキストとして使用して、aspnet_Userまたは添付されたaspnet_Membershipの変更にバインドします。つまり、aspnet_Userが「ダーティ」であるかどうかを表示します。aspnet_User.UserNameまたはaspnet_Membership.Emailのいずれかを変更すると、ダーティフラグが表示されます。以前、Converterを実装し、オブジェクトのEntityStateにバインドしました。これは、単純なプロパティがダーティであるかどうかを示すのに適していますが、aspnet_Membershipメンバーのアスペクトが編集されてもEntityStateは変更されません。
変更されたEntityStateをaspnet_Userまたはaspnet_membershipに反映するBubbledEntityStateというプロパティを実装しようとしました。これは、Silverlightプロジェクトの部分クラスで定義されています。これは、aspnet_Userまたはそのメンバーaspnet_MembershipのEntityStatePropertyChangedイベントに反応する必要があります。そこで、部分的なOnCreatedメソッドでこれらのイベントを処理しようとしました。不思議なことに、しかしこれはまったく呼び出されていません。メソッドは次のとおりです。publicpartialclassaspnet_User {
partial void OnCreated()
{
this.aspnet_Membership.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(aspnet_Membership_PropertyChanged);
this.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(aspnet_User_PropertyChanged);
}
...}
aspnet_Userオブジェクトはサーバー上で構築され、RIAがWCF呼び出しを行った後にクライアント上で再構成された場合、「再構築」されないと想定しています。これは私に独特の印象を与えます。私は気難しいことをしていますか?誰かがこれに対処するためのより良い方法を手に入れましたか?