我想对所有加载注册事件处理工作:路由事件提供类处理程序不会对大多数类
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);
不幸的是我的处理程序只要求窗口和DatePicker的后裔。它不适用于任何其他类型。
任何人都可以解释这种行为吗?
这是一个bug,很遗憾他们选择忽略它。
是否有一些其他方式可以通知应用程序/窗口中的任何新元素?
下落你把RegisterClassHandlers加载/卸载事件?在App.cs中? – 2012-07-12 20:02:04
是的,在静态构造函数中,但它并不重要,因为类处理程序无论如何都被破坏(请参见上面的错误);( – 2012-07-13 08:57:30
这是一个长镜头,有点不好意思,但是您可以替换FrameworkElement.Initialized事件的RegisterClassHandler即创建但尚未呈现)...然后在该回调调用UIElement实例上的AddHandler来连接Loaded和Unloaded事件 – 2012-07-13 10:27:27