我在我的 App.xaml.cs 文件中有以下代码:
protected override void OnStartup(StartupEventArgs e)
{
EventManager.RegisterClassHandler(typeof(TextBox), TextBox.TextChangedEvent, new RoutedEventHandler(TextBox_TextChangedEvent));
}
private void TextBox_TextChangedEvent(object sender, RoutedEventArgs e)
{
// Works
}
我希望对InitializedEvent做类似的事情。
这是我的失败尝试:
protected override void OnStartup(StartupEventArgs e)
{
EventManager.RegisterClassHandler(typeof(FrameworkElement), FrameworkElement.InitializedEvent, new EventHandler(FrameworkElement_InitializedEvent));
}
private void FrameworkElement_InitializedEvent(object sender, EventArgs e)
{
}
初始化事件是否在其他地方?
这真的可能吗?
我尝试使用LoadedEvent:
protected override void OnStartup(StartupEventArgs e)
{
EventManager.RegisterClassHandler(typeof(FrameworkElement), FrameworkElement.LoadedEvent, new RoutedEventHandler(FrameworkElement_LoadedEvent));
}
private void FrameworkElement_LoadedEvent(object sender, RoutedEventArgs e)
{
// Fires only for Windows
}
它只对 Windows 产生了作用,而不对 Windows 内部的控件产生作用。然而,我确实意识到:当我为窗口内的标签添加一个加载事件时,即使我的普通加载事件(我专门为标签创建的)为空,全局的 FrameworkElement_LoadedEvent
也会为该标签触发。我还尝试过这些:
EventManager.RegisterClassHandler(typeof(Button), Button.LoadedEvent, new RoutedEventHandler(Button_LoadedEvent));
EventManager.RegisterClassHandler(typeof(Grid), Grid.LoadedEvent, new RoutedEventHandler(Grid_LoadedEvent));
EventManager.RegisterClassHandler(typeof(DataGrid), DataGrid.LoadedEvent, new RoutedEventHandler(DataGrid_LoadedEvent));
但是它们只有在我特别添加另一个空的加载事件到这些控件上时才会触发。
我的目标是建立一个每个被初始化的控件的时间日志。
如何在不为我拥有的每个单一控件添加加载事件的情况下实现这一目标呢?(我有很多)