private void treeView_MouseMove(object sender, MouseEventArgs e)
 {
     if (e.LeftButton == MouseButtonState.Pressed)
     {
         if (DropAdapter == null)
         {
             return;
         }
         if (!(e.Source is BaseTreeView))
         {
             return;
         }
         if (treeView.SelectedItem == null)
         {
             return;
         }
         TreeNavigationItem selectedTreeNavigationItem = treeView.SelectedItem as TreeNavigationItem;
         if (!DropAdapter.DragStart(e, selectedTreeNavigationItem))
         {
             return;
         }
         TreeViewItem treeViewItem = GetTreeViewItemAt(e.GetPosition(treeView));
         //_dragAdorner = new DragAdorner(treeViewItem, treeViewItem.DesiredSize, e.GetPosition(treeView));
         DragDrop.DoDragDrop(treeView, treeView.SelectedItem, DragDropEffects.All);
         //_dragAdorner.Detach();
     }
 }
        private void treeView_Drop(object sender, DragEventArgs e)
        {
            if (DropAdapter == null)
            {
                return;
            }
            TreeNavigationItem targetTreeNavigationItem  = GetTreeNavigationItemAt(e.GetPosition(treeView));
            TreeNavigationItem draggedTreeNavigationItem = GetDataFromDragEventArgs(e);

            DropAdapter.Drop(e, draggedTreeNavigationItem, targetTreeNavigationItem);
        }
        private void treeView_DragOver(object sender, DragEventArgs e)
        {
            if (DropAdapter == null)
            {
                return;
            }
            TreeNavigationItem targetTreeNavigationItem  = GetTreeNavigationItemAt(e.GetPosition(treeView));
            TreeNavigationItem draggedTreeNavigationItem = GetDataFromDragEventArgs(e);

            //      _dragAdorner.UpdatePosition(e.GetPosition(treeView));
            DropAdapter.DragOver(e, draggedTreeNavigationItem, targetTreeNavigationItem);
            e.Handled = true;
        }