Partilhar via


UIElement.DragEnter Event

Microsoft Silverlight will reach end of support after October 2021. Learn more.

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

Namespace:  System.Windows
Assembly:  System.Windows (in System.Windows.dll)

Syntax

'Declaration
Public Event DragEnter As DragEventHandler
public event DragEventHandler DragEnter
<uiElement DragEnter="eventHandler"/>

Remarks

For this event to occur, the value of AllowDrop on the current UIElement must be true. Otherwise, consider using MouseEnter.

Do not attempt to access the data object payload from event data (DragEventArgs.Data) when handling this event. Although several drag-related events share this event data type in their handler delegate, only a Drop event occurrence provides a useful DragEventArgs.Data value. For more information, see DragEventArgs.Data.

Drag-and-drop events in Silverlight support a scenario of enabling a Silverlight UIElement to be a drop target for a file list that is dragged from another area of the user interface for the overall platform/operating system. The drag origin can be outside of the Silverlight content area or the browser host. True drag-and-drop support that involves carrying a data payload from one object to another is limited to this particular scenario in Silverlight. However, you can enable related scenarios that stay within the Silverlight content area by using mouse capture, and transmitting your own data or using event data from the mouse events, and then adjusting object layout properties. For more information on how to use mouse capture in this way, see How to: Drag and Drop Objects in UI Layout. You also potentially can use HTML bridge techniques to work with a browser host's HTML DOM input events, for objects (including Silverlight) rendered in the browser host's content area. For more information, see HTML Bridge: Interaction Between HTML and Managed Code.

Routed Event Behavior

DragEnter is a bubbling event. This means that if multiple DragEnter event handlers are registered for a sequence of objects connected by parent-child relationships in the object tree, the event is potentially received by each object in that relationship. The bubbling metaphor indicates that the event starts at the source object that received input stimulus, and works its way up the object tree. For a bubbling event, the sender available to the event handler identifies the object where the event is handled, not necessarily the object that actually received the input condition that initiated the event. To get the object that initiated the event, use the OriginalSource value of the event's RoutedEventArgs event data. For more information about routed event concepts, see Events Overview for Silverlight.

Setting DragEventArgs.Handled in the event data prevents handlers from acting, and effectively ends the event route for most scenarios. A DragEnter occurrence might be marked as handled through an OnDragEnter override in a specific control, rather than through an instance handler in your application. You cannot use the AddHandler technique for handling already-handled occurrences of DragEnter, because no RoutedEvent identifier for DragEnter is available in the public API.

An additional condition for receiving a bubbling drag-drop event is that both the sender and the OriginalSource objects must have AllowDrop set to true.

Platform Notes

For Windows platforms, you cannot handle the UIElement drag-and-drop events while running in windowless mode. For more information, see Windowless (Silverlight Plug-in Object).

For Macintosh platforms, receiving drag-and-drop events in Silverlight requires a JavaScript workaround script in the hosting HTML. You must use JavaScript events from the host HTML page to capture the user's drag-and-drop actions, and then forward these events to the Silverlight runtime API. For more information, see Handling Drag-and-Drop Events for Macintosh.

For either platform, you cannot handle the UIElement drag-and-drop events while running in full-screen mode, or in windowless mode. For more information, see FullScreen (Silverlight Plug-in Object) or Windowless (Silverlight Plug-in Object).

Drag-Drop, UAC, and Privilege Boundaries

When developing and debugging applications that use the drag-and-drop events, make sure that all participating processes (Visual Studio, the browser host, and the file list that provides the payload) are running at the same privilege level. On systems that use User Account Control (UAC), messages across lower-to-higher privilege boundaries might be suppressed, and this might prevent the Silverlight drag-and-drop events from being raised or debugged.

See Also

Version Information

Silverlight

Supported in: 5, 4

Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.