我目前正在将Windows窗体应用程序移植到wpf。有一个带有文件名的列表框。应该可以将(多个)项目拖到Windows资源管理器中。
使用旧的Windows表单很容易,但是我找不到在wpf中如何做到这一点的方法。

这是我用于Windows窗体的代码:

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

最佳答案

好的...我基于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);
        }
    }

10-07 19:37
查看更多