There is this Telerik's
RadTreeView (Silverlight Version) control I'd like to extend (inherit from).
Let's call the new control
The thing I'd like to achieve is that when an item is checked in
it will automatically check all its children items. Also, if after
checking the node its parent has all its children checked, I'd like to
check the parent too. That would go recursively throughout the tree up
to the root. I seem to be unable to find this feature by default.
I don't need a solution for the recursive algorithm that would check the items, I can manage that easily myself. What I see as a problem is the fact that a user can subscribe on the
Unchecked events. So if a user has subscribed to a
event, whenever an item is checked all its children will be checked,
thus raising an event for each children node that was automatically
checked as a consequence of checking its parent. In my scenario, this is not a desirable behaviour. I want the event to fire only for the manually checked item, not for any other node that will be automatically checked as a consequence.
I thought I could override the
OnChecked method but it
is either private or there is no such a method, so I have no access to
it. I could add another event handler to the
in a constructor, that would be called before any other event handlers
subscribed to an event, but that does not prevent the children nodes
from raising the event. I would like to be able to unsubscribe the
handlers on the
Checked temporarily, then resubscribe them
again after checking the nodes. However, since I don't know who is
subscribed to an event, I can't unsubscribe them manually (the event is
public) and I don't seem to be able to get the invocation list.
Is there a way to iterate through the subscribed events or any other ways to turn them off temporarily? Is there any better approach to the problem described?