views:

139

answers:

3

I am currently porting a windows forms application to wpf. There is a listbox with filenames in it. It should be possible to drag (multiple) items to the windows explorer. This was easy in with the old windows form, but I can't find a way how this can be done in wpf.

This was the code I used with windows forms:

void listView1_ItemDrag(object sender, ItemDragEventArgs e)
{
    string[] files = GetSelection();
    if (files != null)
    {
        DoDragDrop(new DataObject(DataFormats.FileDrop, files), DragDropEffects.Copy );  
    }
}
A: 

make sure you checked ( checkbox ) the multiple selection option

Grumpy
the multiple selection is not the problem, the code obove shows the way I've done the drag and drop in WIN Forms, I want to know how this works with WPF
hans
+1  A: 

Try checking out Bea Stollnitz' blog for a thorough implementation of drag and drop in WPF.

Bea Stollnitz - How can I drag and drop items between data bound ItemsControls?

Jeff Wain
A: 

Ok... I found a solution for my Problem, based on this tutorial:

    private void List_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        // Store the mouse position
        startPoint = e.GetPosition(null);
    }

    private void List_MouseMove(object sender, MouseEventArgs e)
    {
        // Get the current mouse position
        Point mousePos = e.GetPosition(null);
        Vector diff = startPoint - mousePos;

        if (e.LeftButton == MouseButtonState.Pressed &&
            Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance &&
            Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance)
        {
            if (listView1.SelectedItems.Count == 0)
            {
                return;
            }

            string[] files = GetSelection();
            string dataFormat = DataFormats.FileDrop;
            DataObject dataObject = new DataObject(dataFormat, files);
            DragDrop.DoDragDrop(listView1, dataObject, DragDropEffects.Copy);
        }
    }
hans