2013-05-10 3 views
1

Я пытаюсь собрать решение перетаскивания & в управлении TreeView WPF, используя эти методы: Dragging and dropping to a TreeView, finding the index where to insert the dropped itemWPF TreeView Перетаскивание - Дроп событие срабатывает при нажатии кнопки элемента

, когда пользователь нажимает на TreeViewItem , сначала выполняется treeViewItem_MouseLeftButtonDown, затем также treeViewItem_Drop. При каждом нажатии.

+1

'событие treeViewItem_Drop' будет поднят, когда кнопка мыши отпущена. Вы вызываете 'DragDrop.DoDragDrop()' из обработчика treeViewItem_MouseLeftButtonDown? Если это так, попробуйте вместо этого вызвать его из обработчика treeViewItem_MouseMove. Просто убедитесь, что нажата левая кнопка мыши, прежде чем вызывать 'DoDragDrop'. –

+0

Большое спасибо, это решило это. Не могли бы вы опубликовать это как ответ, и я помечаю его как ответный ответ. –

ответ

2

Похоже, вы звоните DragDrop.DoDragDrop() с обработчика treeViewItem_MouseLeftButton. treeViewItem_Drop даже поднимается, когда кнопка мыши отпущена, поэтому вы получаете событие drop при каждом щелчке мышью. Попробуйте позвонить DoDragDrop из обработчика treeViewItem_MouseMove. Просто убедитесь, что нажата левая кнопка мыши, прежде чем звонить DroDragDrop. Вы также можете убедиться, что мышь переместилась минимальное расстояние до начала DragDrop операции, а также, например,

if(e.LeftButton == MouseButtonState.Pressed 
    && horizontal_move > SystemParameters.MinimumHorizontalDragDistance) 
{ 
    DragDrop.DoDragDrop(); 
} 
Смежные вопросы