LoadedEvent的路由事件类处理程序对大多数类都不起作用

Mar*_*cki 4 wpf event-handling routed-events

我正在尝试为所有Loaded事件注册处理程序:

EventManager.RegisterClassHandler(typeof(UIElement), FrameworkElement.LoadedEvent, new RoutedEventHandler(OnRoutedEvent), true);
EventManager.RegisterClassHandler(typeof(ContentElement), FrameworkContentElement.LoadedEvent, new RoutedEventHandler(OnRoutedEvent), true);
EventManager.RegisterClassHandler(typeof(UIElement), FrameworkElement.UnloadedEvent, new RoutedEventHandler(OnRoutedEvent), true);
EventManager.RegisterClassHandler(typeof(ContentElement), FrameworkContentElement.UnloadedEvent, new RoutedEventHandler(OnRoutedEvent), true);
Run Code Online (Sandbox Code Playgroud)

不幸的是,我的处理程序只被调用Window和DatePicker的后代.它不适用于任何其他类型.

谁能解释这种行为?这是一个错误,遗憾的是他们选择忽略它.

是否有其他方式可以通知应用程序/窗口中的任何新元素?

Col*_*ith 6

也许你可以定义一个使用FrameworkPropertyMetadataOptions.Inherits的AttachedProperty/Behavior,然后在你的根元素上指定它,并在行为中挂钩每个实例上的Loaded/Unloaded事件