private void List1_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (_dragged != null) { return; } UIElement element = List1.InputHitTest(e.GetPosition(List1)) as UIElement; while (element != null) { if (element is ListBoxItem) { _dragged = (ListBoxItem)element; break; } element = VisualTreeHelper.GetParent(element) as UIElement; } }