private void CommonPreviewMouseMove(MouseEventArgs e, TreeView treeView) { if (_startPoint == null) { return; } if (e.LeftButton == MouseButtonState.Pressed && !_IsDragging) { Point position = e.GetPosition(treeView); if (Math.Abs(position.X - _startPoint.X) > SystemParameters.MinimumHorizontalDragDistance || Math.Abs(position.Y - _startPoint.Y) > SystemParameters.MinimumVerticalDragDistance) { if (treeView.SelectedItem != null) { IInputElement hitelement = treeView.InputHitTest(_startPoint); TreeViewItem item = treeView.GetTreeViewItemClicked((FrameworkElement)hitelement); if (item != null) { StartDrag(e, treeView, item); } } } } }