/// <summary> /// Method for registering the delegate. Based on the field type of the events, /// its switches the event registration between standard CLR and WPF registration for RoutedEvents to also keep track on Handled events. /// </summary> /// <param name="target"></param> /// <param name="delegate"></param> /// <param name="definition"></param> private void RegisterDelegate(FrameworkElement target, Delegate @delegate, EventDefinition definition) { //Testing if its an routed Event var field = definition.GetFieldInfo(target.GetType()); if (field == null || !field.FieldType.Equals(typeof(RoutedEvent)) || !typeof(RoutedEvent).IsAssignableFrom(field.FieldType)) { definition.GetEventInfo(target.GetType()).AddEventHandler(target, @delegate); } else { target.AddHandler((RoutedEvent)field.GetValue(target), @delegate, definition.HandledEventsToo); } }