/// <summary> /// Gets invoked when drag helper first attempts to initiate a drag operation. /// </summary> /// <param name="e">Event data object</param> /// <remarks>The event data contains DragData field which must be filled in with a valid data /// object. The base implementation of this method fires an event giving any listener a chance /// to provide the data object. Alternatively, a deriving class can provide it's own override /// of this method and fill in data object there. Without the data object, drag operation will /// not be started. It is advisable for derived class to make sure base implementation of this /// method is called.</remarks> protected virtual void OnQueryDragData(QueryDragDataEventArgs e) { if (QueryDragData != null) { QueryDragData(this, e); } }
/// <summary> /// Gets invoked when drag helper detects that a drag source has been dragged far enough /// for drag operation to initiate. If this method is overriden, deriving class must ensure /// that base implementation is invoked. /// </summary> protected virtual void DoDragDrop() { var eventArgs = new QueryDragDataEventArgs(_clickPoint); OnQueryDragData(eventArgs); if (eventArgs.IsCancelled || eventArgs.DragData == null) { return; } OnDragStarted(eventArgs.DragData); _adorner = new DragDropAdorner(_dragSource, _clickPoint); DragDropEffects result = DragDrop.DoDragDrop( _dragSource, eventArgs.DragData, DragDropEffects.Move | DragDropEffects.Link); _adorner.RemoveAdorner(); _adorner = null; OnDragComplete(eventArgs.DragData, result); }
/// <inheritdoc/> protected override void OnQueryDragData(QueryDragDataEventArgs e) { if (_dragFrozenCount > 0) { return; } base.OnQueryDragData(e); if (e.DragData == null) { var data = new WidgetSiteDragDropData() { DraggableOffset = e.DraggableOffset, Site = Parent, Widget = (Data.WidgetData)Parent.Content }; var dataObject = new DataObject(data); e.DragData = dataObject; } }
/// <summary> /// Gets invoked when drag helper first attempts to initiate a drag operation. /// </summary> /// <param name="e">Event data object</param> /// <remarks>The event data contains DragData field which must be filled in with a valid data /// object. The base implementation of this method fires an event giving any listener a chance /// to provide the data object. Alternatively, a deriving class can provide it's own override /// of this method and fill in data object there. Without the data object, drag operation will /// not be started. It is advisable for derived class to make sure base implementation of this /// method is called.</remarks> protected virtual void OnQueryDragData( QueryDragDataEventArgs e ) { if( QueryDragData != null ) { QueryDragData( this, e ); } }
/// <summary> /// Gets invoked when drag helper detects that a drag source has been dragged far enough /// for drag operation to initiate. If this method is overriden, deriving class must ensure /// that base implementation is invoked. /// </summary> protected virtual void DoDragDrop() { var eventArgs = new QueryDragDataEventArgs( _clickPoint ); OnQueryDragData( eventArgs ); if( eventArgs.IsCancelled || eventArgs.DragData == null ) return; OnDragStarted( eventArgs.DragData ); _adorner = new DragDropAdorner( _dragSource, _clickPoint ); DragDropEffects result = DragDrop.DoDragDrop( _dragSource, eventArgs.DragData, DragDropEffects.Move | DragDropEffects.Link ); _adorner.RemoveAdorner(); _adorner = null; OnDragComplete( eventArgs.DragData, result ); }
/// <inheritdoc/> protected override void OnQueryDragData( QueryDragDataEventArgs e ) { if( _dragFrozenCount > 0 ) return; base.OnQueryDragData( e ); if( e.DragData == null ) { var data = new WidgetSiteDragDropData() { DraggableOffset = e.DraggableOffset, Site = Parent, Widget = (Data.WidgetData)Parent.Content }; var dataObject = new DataObject( data ); e.DragData = dataObject; } }