protected override void OnPreviewMouseDown(MouseButtonEventArgs e) { base.OnPreviewMouseDown(e); if (DragAdornerThumb.IsDragging) { return; } if (hitResultsList == null) { hitResultsList = new List <DesignerContainer>(); } hitResultsList.Clear(); // Retrieve the coordinate of the mouse position. Point pt = e.GetPosition(_designerCanvas); // Clear the contents of the list used for hit test results. // Set up a callback to receive the hit test result enumeration. VisualTreeHelper.HitTest(_designerCanvas, MyHitTestFilter, MyHitTestResult, new PointHitTestParameters(pt)); // Perform actions on the hit test results list. if (hitResultsList.Count > 0) { if ((Keyboard.Modifiers & ModifierKeys.Control) != ModifierKeys.None) { foreach (var item in hitResultsList) { _designerCanvas.SelectContainer(item); } } else { } } }