У меня есть приложение RIA silverlight 4 со сложным типом данных в качестве модели. В качестве знакомого примера назовем его aspnet_User, который имеет объект-член, называемый aspnet_Membership; У aspnet_User есть член, называемый «UserName», а aspnet_Membership - член, называемый «Email». Теперь, используя aspnet_User как datacontext, я хочу привязываться к любым изменениям в aspnet_User или присоединенном aspnet_Membership - то есть я хочу показать, является ли aspnet_User «грязным». Грязный флаг должен показать, если я изменил aspnet_User.UserName или aspnet_Membership.Email. Теперь ранее я реализовал конвертер и привязался к EntityState для объекта, и это прекрасно для того, чтобы показать, являются ли простые свойства грязными, но EntityState не изменяется, когда изменяются аспекты члена aspnet_Membership.RIA, Silverlight 4, EntityStates и сложные типы
Я попытался реализовать свойство BubbledEntityState, которое отражает измененный EntityState либо aspnet_User, либо aspnet_membership. Он определен в частичном классе в проекте Silverlight. Это нужно отреагировать на события EntityState PropertyChanged на aspnet_User или на членство aspnet_Membership. Поэтому я попытался обработать эти события в частичном методе OnCreated. Странно, однако это вообще не называется. Вот метод: общественный частичный класс 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);
}
... }
Я предполагаю объекты aspnet_User построены на сервере и не «реконструировали», когда они восстанавливаются на клиент после того, как RIA выполнил вызов WCF. Это кажется мне странным. Неужели я делаю что-то странное? Кто-нибудь получил лучший способ справиться с этим?