DragDrop.DragEnter Attached Event
Occurs when an object is dragged into the bounds of an element that is acting as a drop target.
Assembly: PresentationCore (in PresentationCore.dll)
This event is raised once each time an object is dragged into the bounds of an element that is acting as a drop target. This event is not raised if the element’s AllowDrop property is false.
Handling this event is optional for the drop target, and is not necessary for all drag-and-drop scenarios. You typically handle this event to provide a preview of the effects of the drag-and-drop operation, if appropriate for your application. Do not set the DragEventArgs.Effects property in the DragEnter event, as it will be overwritten in the DragOver event.
Identifier field | |
Routing strategy | Bubbling |
Delegate |
The corresponding tunneling event is PreviewDragEnter.
The following example shows the DragEnter event handler for an Ellipse element. This code previews the effects of the drag-and-drop operation by saving the current Fill brush. It then checks to see if the DataObject being dragged over the ellipse contains string data that can be converted to a Brush. If so, the Brush is applied to the ellipse. The change is reverted in the DragLeave event handler. If the data cannot be converted to a Brush, no action is performed.
private Brush _previousFill = null; private void ellipse_DragEnter(object sender, DragEventArgs e) { Ellipse ellipse = sender as Ellipse; if (ellipse != null) { // Save the current Fill brush so that you can revert back to this value in DragLeave. _previousFill = ellipse.Fill; // If the DataObject contains string data, extract it. if (e.Data.GetDataPresent(DataFormats.StringFormat)) { string dataString = (string)e.Data.GetData(DataFormats.StringFormat); // If the string can be converted into a Brush, convert it. BrushConverter converter = new BrushConverter(); if (converter.IsValid(dataString)) { Brush newFill = (Brush)converter.ConvertFromString(dataString); ellipse.Fill = newFill; } } } }