示例#1
0
        /// <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);
            }
        }
示例#2
0
        /// <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);
            }
        }