Share via

UIElement.Drop Event


Occurs when the input system reports an underlying drop event with this element as the drop target.

 virtual event DragEventHandler ^ Drop;
// Register
event_token Drop(DragEventHandler const& handler) const;

// Revoke with event_token
void Drop(event_token const* cookie) const;

// Revoke with event_revoker
UIElement::Drop_revoker Drop(auto_revoke_t, DragEventHandler const& handler) const;
public event DragEventHandler Drop;
function onDrop(eventArgs) { /* Your code */ }
uIElement.addEventListener("drop", onDrop);
uIElement.removeEventListener("drop", onDrop);
- or -
uIElement.ondrop = onDrop;
Public Custom Event Drop As DragEventHandler 
<uiElement Drop="eventhandler"/>

Event Type


For Drop to occur and to invoke a handler, the value of AllowDrop on the UIElement that is the drop target and also on the drag-drop action source must be true.

A typical handler will check the Data value from the DragEventArgs event data.

You can initiate a drag-drop action on any UIElement by calling the StartDragAsync method. Once the action is initiated, any UIElement in the app can potentially be a drop target so long as AllowDrop is true on that element, and any elements that the drag-drop action passes over can handle DragEnter, DragLeave or DragOver.

Drop is a routed event. An element must have AllowDrop be true to be a Drop event source. If the event is permitted to bubble up to parent elements because it goes unhandled, then it is possible to handle the event on a parent element if AllowDrop is true on the parent element. Intermediate elements in the route that aren't either the handler object or the drop target don't need AllowDrop to be true. For more info on the routed event concept, see Events and routed events overview.

For touch actions, drag-drop actions, and also for interaction-specific or manipulation events that are consequences of a touch action, an element must be hit-test visible in order to be the event source and fire the event that is associated with the action. UIElement.Visibility must be Visible. Other properties of derived types also affect hit-test visibility, for example IsEnabled. For more info, see Events and routed events overview.

Drop supports the ability to attach event handlers to the route that will be invoked even if the event data for the event is marked Handled. See AddHandler.

Specific Windows Runtime controls may have class-based handling for the Drop event. If so, the control's logic probably has an override for the method OnDrop. Typically the event is marked handled by the class handler, and the Drop event is not raised for handling by any user code handlers on that control. For more info, see Events and routed events overview.

Independent of the event occurrence, some controls may use theme animations such as DragItemThemeAnimation to visually indicate a drag behavior to the user.

Windows 8/Windows 8.1 Prior to Windows 10, the Windows Runtime implementation of drag-drop concepts permits only certain controls and input actions to initiate a drag-drop action. There is no StartDragAsync or generalized DoDragDrop method that would permit any UI element to initiate a drag-drop action. The main source of a drag-drop action in an app is when you drag the items of a list such as GridView.

Applies to

See also