/// <summary> /// Removes a handler from the attached Drop event. /// </summary> /// <param name="element">The DependencyObject to attach an event handler for.</param> /// <param name="handler">The event handler.</param> internal static void RemoveDropHandler(DependencyObject element, DragEventHandler handler) { if (element == null) { throw new ArgumentNullException("element"); } if (handler == null) { throw new ArgumentNullException("handler"); } ExtendedRoutedEventHandlerCollection <DragEventHandler, DragEventArgs> handlers = element.GetDropHandlers(); if (handlers != null) { handlers.Remove(handler); } }
/// <summary> /// Adds a handler to the attached Drop event. /// </summary> /// <param name="element">The DependencyObject to attach an event handler for.</param> /// <param name="handler">The event handler.</param> /// <param name="handledEventsToo">A value Indicating whether to invoke the handler if the event is handled.</param> internal static void AddDropHandler(DependencyObject element, DragEventHandler handler, bool handledEventsToo) { if (element == null) { throw new ArgumentNullException("element"); } if (handler == null) { throw new ArgumentNullException("handler"); } ExtendedRoutedEventHandlerCollection <DragEventHandler, DragEventArgs> originalHandlers = element.GetDropHandlers(); ExtendedRoutedEventHandlerCollection <DragEventHandler, DragEventArgs> handlers = originalHandlers ?? new ExtendedRoutedEventHandlerCollection <DragEventHandler, DragEventArgs>((h, a) => h(element, a)); handlers.Add(handler, handledEventsToo); if (handlers != originalHandlers) { element.SetValue(DropHandlerProperty, handlers); } }
/// <summary> /// Raises the attached DragLeave event on a element. /// </summary> /// <param name="element">The element to raise the event on.</param> /// <param name="args">Information about the event.</param> internal static void OnDragLeave(this DependencyObject element, SW.DragEventArgs args) { if (!args.Handled) { IAcceptDrop acceptDrop = element as IAcceptDrop; if (acceptDrop != null) { acceptDrop.OnDragLeave(args); } } ExtendedRoutedEventHandlerCollection <SW.DragEventHandler, SW.DragEventArgs> handlers = element.GetDragLeaveHandlers(); if (handlers != null) { handlers.Raise(args); } }
/// <summary> /// Raises the attached GiveFeedback event on a element. /// </summary> /// <param name="element">The element to raise the event on.</param> /// <param name="args">Information about the event.</param> internal static void OnGiveFeedback(this DependencyObject element, SW.GiveFeedbackEventArgs args) { if (!args.Handled) { IAcceptDrop acceptDrop = element as IAcceptDrop; if (acceptDrop != null) { acceptDrop.OnGiveFeedback(args); } } ExtendedRoutedEventHandlerCollection <GiveFeedbackEventHandler, SW.GiveFeedbackEventArgs> handlers = element.GetGiveFeedbackHandlers(); if (handlers != null) { handlers.Raise(args); } }