Ecco qua,
Questa è la parte che riguarda il drag:
private void listBox1_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
if (GetItem(listBox1, e.GetPosition(listBox1)) != null)
startDrag = true;
}
private void listBox1_MouseMove(object sender, MouseEventArgs e)
{
if ( startDrag && (e.LeftButton == MouseButtonState.Pressed))
{
if (listBox1.SelectionMode == SelectionMode.Multiple)
{
DataObject dragData = new DataObject("myObjectList", listBox1.SelectedItems);
DragDrop.DoDragDrop(listBox1, dragData, DragDropEffects.Move);
}
else
{
DataObject dragData = new DataObject("myObject", listBox1.SelectedItem);
DragDrop.DoDragDrop(listBox1, dragData, DragDropEffects.Move);
}
}
startDrag = false;
}
private static object GetItem(ItemsControl control, Point point)
{
UIElement element = control.InputHitTest(point) as UIElement;
while ((element != null) && (element != control))
{
object item = control.ItemContainerGenerator.ItemFromContainer(element);
if (item != DependencyProperty.UnsetValue)
return item;
element = VisualTreeHelper.GetParent(element) as UIElement;
}
return null;
}
Qui la cosa è un poco più complicata comincia a guardarlo e poi ne parliamo