В WPF это называется Маршрутизируемые события , но это будет работать, только если оба они истинны:
- Мы говорим о классах элементов, и «содержит» означает, что один из ваших элементов управления фактически содержит другой [и
LogicalTreeHelper
утверждает, что ваши элементы управления являются родителями / детьми друг для друга.
- Если искомое событие определено как маршрутизируемое с правильной стратегией маршрутизации - будет работать либо
tunelled
, либо bubbling
. Если это не так, то маршрутизация событий вам не поможет.
У меня такое ощущение, что все, что вам нужно, это что-то вроде этого:
в классе B:
this.instanceOfA.InstanceOfX.MyEvent += MyHandlerInClassB;
но это не имеет никакого отношения к WPF.
UPD: или что-то вроде этого, если вы не хотите делать instanceOfX доступным:
- Определите то же событие для
classA
и вызывайте его всякий раз, когда instanceOfX
вызывает его событие
- В
ClassB
ручка instanceOfA.MyEvent
В этом случае вы можете оставить instanceOfX
приватным, но вам придется добавить еще одно событие в середине.