I must admit that this may be a bit confusing but it is the expected behavior.
The events that are exposed as standard CLR events in the Telerik controls are in fact wrappers over routed events. The routed events can be handled in any of the visual ancestors of the control.
For example all TabControl.SelectionChanged events can be handled at the root of the application by using:
appRoot.AddHandler(RadTabControl.SelectionChangedEvent, new RoutedEventHandler
When you register for the Selection changed event, you actually register a handler for the routed event and therefore you receive the event from the inner control as well.
In this case you can decide to handle the event before it reaches the outer TabControl (set e.Handled = true
) or check the sender in the handler to distinguish between the two controls.
Routed events can be very useful but in this case a bit confusing,
the Telerik team