GongSolutions.Wpf.DragDrop Interface implemented by Drag Handlers. Queries whether a drag can be started. Information about the drag. To allow a drag to be started, the property on should be set to a value other than . Notifies the drag handler that a drop has occurred. Information about the drop. Notifies the drag handler that a drag has been aborted. Interface implemented by Drop Handlers. Updates the current drag state. Information about the drag. To allow a drop at the current drag position, the property on should be set to a value other than and should be set to a non-null value. Performs a drop. Information about the drop. DragMouseAnchorPoint defines the horizontal and vertical proportion at which the pointer will anchor on the DragAdorner. Gets the drag handler from the drag info or from the sender, if the drag info is null the drag info object the sender from an event, e.g. mouse down, mouse move Gets the drop handler from the drop info or from the sender, if the drop info is null the drop info object the sender from an event, e.g. drag over Holds information about a the source of a drag drop operation. The class holds all of the framework's information about the source of a drag. It is used by to determine whether a drag can start, and what the dragged data should be. Gets or sets the drag data. This must be set by a drag handler in order for a drag to start. Gets the position of the click that initiated the drag, relative to . Gets the point where the cursor was relative to the item being dragged when the drag was started. Gets or sets the allowed effects for the drag. This must be set to a value other than by a drag handler in order for a drag to start. Gets the mouse button that initiated the drag. Gets the collection that the source ItemsControl is bound to. If the control that initated the drag is unbound or not an ItemsControl, this will be null. Gets the position from where the item was dragged. Gets the object that a dragged item is bound to. If the control that initated the drag is unbound or not an ItemsControl, this will be null. Gets a collection of objects that the selected items in an ItemsControl are bound to. If the control that initated the drag is unbound or not an ItemsControl, this will be empty. Gets the control that initiated the drag. Gets the item in an ItemsControl that started the drag. If the control that initiated the drag is an ItemsControl, this property will hold the item container of the clicked item. For example, if is a ListBox this will hold a ListBoxItem. Gets the FlowDirection of the current drag source. Gets the which is used by the drag and drop operation. Set it to a custom instance if custom drag and drop behavior is needed. Initializes a new instance of the DragInfo class. The sender of the mouse event that initiated the drag. The mouse event that initiated the drag. Gets or sets the drag data. This must be set by a drag handler in order for a drag to start. Gets the position of the click that initiated the drag, relative to . Gets the point where the cursor was relative to the item being dragged when the drag was started. Gets or sets the allowed effects for the drag. This must be set to a value other than by a drag handler in order for a drag to start. Gets the mouse button that initiated the drag. Gets the collection that the source ItemsControl is bound to. If the control that initated the drag is unbound or not an ItemsControl, this will be null. Gets the position from where the item was dragged. The index of the source. Gets the object that a dragged item is bound to. If the control that initated the drag is unbound or not an ItemsControl, this will be null. Gets a collection of objects that the selected items in an ItemsControl are bound to. If the control that initated the drag is unbound or not an ItemsControl, this will be empty. Gets the control that initiated the drag. Gets the item in an ItemsControl that started the drag. If the control that initiated the drag is an ItemsControl, this property will hold the item container of the clicked item. For example, if is a ListBox this will hold a ListBoxItem. Gets the FlowDirection of the current drag source. Gets the which is used by the drag and drop operation. Set it to a custom instance if custom drag and drop behavior is needed. Holds information about a the target of a drag drop operation. The class holds all of the framework's information about the current target of a drag. It is used by method to determine whether the current drop target is valid, and by to perform the drop. Gets the drag data. If the drag came from within the framework, this will hold: - The dragged data if a single item was dragged. - A typed IEnumerable if multiple items were dragged. Gets a object holding information about the source of the drag, if the drag came from within the framework. Gets the mouse position relative to the VisualTarget Gets or sets the class of drop target to display. The standard drop target adorner classes are held in the class. Gets or sets the allowed effects for the drop. This must be set to a value other than by a drop handler in order for a drop to be possible. Gets the current insert position within . Gets the collection that the target ItemsControl is bound to. If the current drop target is unbound or not an ItemsControl, this will be null. Gets the object that the current drop target is bound to. If the current drop target is unbound or not an ItemsControl, this will be null. Gets the current group target. If the drag is currently over an ItemsControl with groups, describes the group that the drag is currently over. Gets the control that is the current drop target. Gets the item in an ItemsControl that is the current drop target. If the current drop target is unbound or not an ItemsControl, this will be null. Gets the orientation of the current drop target. Gets the FlowDirection of the current drop target. Gets and sets the text displayed in the DropDropEffects adorner. Gets the relative position the item will be inserted to compared to the TargetItem Gets a flag enumeration indicating the current state of the SHIFT, CTRL, and ALT keys, as well as the state of the mouse buttons. Indicates if the drop info should be handled by itself (useful for child elements) Initializes a new instance of the DropInfo class. The sender of the drag event. The drag event. Information about the source of the drag, if the drag came from within the framework. Gets the drag data. If the drag came from within the framework, this will hold: - The dragged data if a single item was dragged. - A typed IEnumerable if multiple items were dragged. Gets a object holding information about the source of the drag, if the drag came from within the framework. Gets the mouse position relative to the VisualTarget Gets or sets the class of drop target to display. The standard drop target adorner classes are held in the class. Gets or sets the allowed effects for the drop. This must be set to a value other than by a drop handler in order for a drop to be possible. Gets the current insert position within . Gets the collection that the target ItemsControl is bound to. If the current drop target is unbound or not an ItemsControl, this will be null. Gets the object that the current drop target is bound to. If the current drop target is unbound or not an ItemsControl, this will be null. Gets the current group target. If the drag is currently over an ItemsControl with groups, describes the group that the drag is currently over. Gets the control that is the current drop target. Gets the item in an ItemsControl that is the current drop target. If the current drop target is unbound or not an ItemsControl, this will be null. Gets the orientation of the current drop target. Gets the orientation of the current drop target. Gets and sets the text displayed in the DropDropEffects adorner. Gets the relative position the item will be inserted to compared to the TargetItem Gets a flag enumeration indicating the current state of the SHIFT, CTRL, and ALT keys, as well as the state of the mouse buttons. Static class to provide access to standard application images Loads an image based on the name and size required. Images need to be marked as 'Resource' in the project for them be loaded. Name of the icon The size of the icon The image to be displayed thx to @osicka from issue #84 e.g. original source is part of a popup (e.g. ComboBox drop down), the hit test needs to be done on the original source. Because the popup is not attached to the visual tree of the sender. This function test this by looping back from the original source to the sender and if it didn't end up at the sender stopped the drag. find the visual ancestor by type and go through the visual tree until the given itemsControl will be found