private void SetPopupDragAdorner( ColumnManagerCell columnManagerCell ) { if( columnManagerCell == null ) return; if( m_popupDraggedElementAdorner != null ) { this.AdornerLayerInsideDragContainer.Remove( m_popupDraggedElementAdorner ); m_popupDraggedElementAdorner = null; } // Get the Rect for the DataGridControl DataGridControl dataGridControl = this.DraggedDataGridContext.DataGridControl; Rect dataGridControlRect = new Rect( 0d, 0d, dataGridControl.ActualWidth, dataGridControl.ActualHeight ); Point elementToDataGridControl = columnManagerCell.TranslatePoint( ColumnReorderingDragSourceManager.EmptyPoint, dataGridControl ); // Get the Rect for the element that request a ghost Rect elementRect = new Rect( elementToDataGridControl, columnManagerCell.RenderSize ); // This is a special case with the current Element that is always be layouted, but can be out of view if( !elementRect.IntersectsWith( dataGridControlRect ) ) return; AnimatedDraggedElementAdorner adorner = new AnimatedDraggedElementAdorner( columnManagerCell, this.AdornerLayerInsideDragContainer, true ); adorner.AdornedElementImage.Opacity = 0d; this.ApplyContainerClip( adorner ); this.AdornerLayerInsideDragContainer.Add( adorner ); m_popupDraggedElementAdorner = adorner; }
public void AddDraggedColumnGhost( UIElement element ) { if( ( element == null ) || m_elementToDraggedElementAdorner.ContainsKey( element ) ) return; // Get the Rect for the DataGridControl DataGridControl dataGridControl = this.DraggedDataGridContext.DataGridControl; Rect dataGridControlRect = new Rect( 0, 0, dataGridControl.ActualWidth, dataGridControl.ActualHeight ); Point elementToDataGridControl = element.TranslatePoint( ColumnReorderingDragSourceManager.EmptyPoint, dataGridControl ); // Get the Rect for the element that request a ghost Rect elementRect = new Rect( elementToDataGridControl, element.RenderSize ); // This is a special case with the current Element that is always layouted, but can be out of view if( !elementRect.IntersectsWith( dataGridControlRect ) ) return; AnimatedDraggedElementAdorner adorner = new AnimatedDraggedElementAdorner( element, this.AdornerLayerInsideDragContainer, true ); this.ApplyContainerClip( adorner ); this.AdornerLayerInsideDragContainer.Add( adorner ); m_elementToDraggedElementAdorner.Add( element, adorner ); }