Невозможно использовать .net Framework, если вы не создадите что-то похожее на функциональность, предоставляемую классом EventManager.
Предположим, вы начали реализацию. Тогда вам придется перемещаться вверх и вниз по графику объектов (если ваша иерархия классов не является деревом). Для этого вам нужно как-то определить, какие объекты на самом деле являются частью дерева, а какие нет.
Предположим, у вас есть следующее:
class A
{
public B b;
}
class B
{
}
B b1 = new B();
A a1 = new A() { b = b1 };
A a2 = new A() { b = b1 };
Предположим, что b1 вызывает всплывающее событие. Для какого родителя это должно пузыриться? а1 или а2?
Пузырьки и туннелирование в WPF и Silverlight работают, потому что у вас есть элементы UIE, которые находятся в дереве, а не в графике, как в сценарии выше. Но произвольные классовые иерархии - это графы, а не деревья.
Поэтому, если вы начнете реализовывать нечто подобное, это будет работать только для класса дерева, подобного следующему.
class Node
{
Node parent;
//other members
}
Тогда вы бы знали, как всегда всплывать, используя свойство "parent".
Но прежде чем приступить к реализации EventManager, я бы посоветовал вам еще раз взглянуть на то, что такое RoutedEvents и каковы сценарии их использования: http://msdn.microsoft.com/en-us/library/ms742806.aspx
Также, возможно, вы могли бы предоставить нам сценарии, в которых перенаправленные события были бы полезны для иерархии (дерева) стандартного (не-пользовательского) класса, чтобы посмотреть, сможем ли мы найти альтернативу RoutedEvents.