public static void RemoveHandler(UIElement element, RoutedEvent routedEvent, Delegate handler) { if (element == null) { throw new ArgumentNullException("element"); } if (routedEvent == null) { throw new ArgumentNullException("routedEvent"); } if (handler == null) { throw new ArgumentNullException("handler"); } if (!EventManager.IsLegalHandler(routedEvent, handler)) { throw new ArgumentException("Illegal Handler type for " + routedEvent.Name + " event"); } EnsureEventsProperty(); EventHandlerStore events = (EventHandlerStore)element.GetValue(EventsProperty); if (events == null) { return; } IntPtr routedEventPtr = BaseComponent.getCPtr(routedEvent).Handle; long routedEventKey = routedEventPtr.ToInt64(); Delegate eventHandler; if (!events._binds.TryGetValue(routedEventKey, out eventHandler)) { return; } eventHandler = Delegate.Remove(eventHandler, handler); events._binds[routedEventKey] = eventHandler; if (eventHandler == null) { Noesis_RoutedEvent_Unbind(_raiseRoutedEvent, events._element, routedEventPtr); events._binds.Remove(routedEventKey); } }
public static void RemoveHandler(UIElement element, string eventId, Delegate handler) { if (element == null) { throw new ArgumentNullException("element"); } if (string.IsNullOrEmpty(eventId)) { throw new ArgumentNullException("eventId"); } if (handler == null) { throw new ArgumentNullException("handler"); } if (!EventManager.IsLegalHandler(eventId, handler)) { throw new ArgumentException("Illegal Handler type for " + eventId + " event"); } EnsureEventsProperty(); EventHandlerStore events = (EventHandlerStore)element.GetValue(EventsProperty); if (events == null) { return; } long eventKey = eventId.GetHashCode(); Delegate eventHandler; if (!events._binds.TryGetValue(eventKey, out eventHandler)) { return; } eventHandler = Delegate.Remove(eventHandler, handler); if (eventHandler == null) { Noesis_Event_Unbind(_raiseEvent, events._element, eventId); events._binds.Remove(eventKey); } }
private static void RaiseEvent(IntPtr cPtrType, IntPtr cPtr, string eventId, IntPtr sender, IntPtr e) { try { if (Extend.Initialized) { UIElement element = (UIElement)Extend.GetProxy(cPtrType, cPtr, false); if (element == null) { return; } EnsureEventsProperty(); EventHandlerStore events = (EventHandlerStore)element.GetValue(EventsProperty); long eventKey = eventId.GetHashCode(); // check if we are called to unbind the event if (sender == IntPtr.Zero && e == IntPtr.Zero) { events._binds.Remove(eventKey); return; } // invoke handler Delegate eventHandler; if (!events._binds.TryGetValue(eventKey, out eventHandler)) { return; } EventManager.InvokeHandler(eventId, eventHandler, sender, e); } } catch (Exception exception) { Error.UnhandledException(exception); } }