Example #1
0
        /// <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);
            }
        }