У меня есть приложение 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.
Я попытался реализовать свойство с именем 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. Это кажется мне странным. Я делаю что-то капризное? У кого-нибудь есть лучший способ справиться с этим?