I'm finding that my OnChildChanged() virtual override in my root is being called at least somewhat reliably when the property of an item in child BusinessListBase object is chagned. However, I have a comment in my code that the variant in which a ListChangedEventArgs is passed is the one that seems to work all the time. This doesn't necessarily give up bubbling all the way to the root from a deep descendant, though.
It's been a while since I worked on this, but I also vaguely remember an issue in which the wiring of the events was different after the object was saved once (or if you used a remote data portal), because OnDeserialized() would wire some events that didn't seem to otherwise be hooked.
What version of CSLA are we talking about?
Also, please remember that ChildChanged only works automatically when you are using managed backing fields for all child properties. Otherwise you need to manually hook/rehook the events as objects are created or deserialized.
In my case, it's still CSLA 3.5. However, I'm still getting OnChildChanged via the ListChanged event even for unmanaged properties. This appears to be working because I call OnPropertyChanged in my setters...
I don’t remember how far back (but I think 3.6) I reworked the entire event infrastructure to solve some flaws – check the change logs, as it may be that you can just upgrade to get the solution.
Copyright (c) Marimer LLC