Arraste e solte para Desktop / Explorer

Seguindo meu cenário.

Eu tenho um aplicativo que carrega uma estrutura de arquivos (pastas, arquivos) de um database em um ListView WPF. Agora eu gostaria de pegar um arquivo deste ListView, arrastá-lo sobre o meu Desktop (ou alguma janela do explorador aberto) e soltá-lo lá. Arrastar e soltar básico, nada extravagante. Isso soa como uma function “padrão” para um aplicativo do Windows – mas o Google não ajuda.

Então, como posso conseguir isso? Interops

obrigado

Edit : Obrigado pela solução, eu ainda tive que fazer alguns googling. Aqui está minha solução completa .

DragDrop.DoDragDrop pode fazer isso contanto que você passe um DataObject apropriado.

Primeiro copie os arquivos em algum lugar. Você pode usar o System.IO.Path.GetTempPath() se não tiver um lugar melhor.

Em seguida, crie uma matriz de cadeias contendo os caminhos completos para os arquivos e faça o seguinte:

 string[] paths = ...; DragDrop.DoDragDrop(this, new DataObject(DataFormats.FileDrop, paths), DragDropEffects.Copy); 

Na verdade, é possível fazer isso sem pré-copiar os arquivos, mas isso entra em algumas interações IDataObject complicadas, portanto, a menos que seus arquivos sejam potencialmente muito grandes e ainda não estejam no sistema de arquivos, eu tentaria esse método primeiro.