2010-09-21 9 views
2

J'ai un contrôle utilisateur WPF hébergé dans une application Windows Forms et le contrôle contient une image WPF (entre autres choses) et je me demandais s'il était possible de laisser l'utilisateur glisser cette image à l'extérieur de l'application (à Windows Explorer, sur le bureau, dans un dossier)?WPF Image: Laisser l'utilisateur glisser l'image sur le bureau

Cordialement, MadSeb

+0

Glisser quoi sur le bureau? Voulez-vous dire en faire l'image de fond, ou de faire glisser et déposer un fichier sur le bureau? –

+0

Salut .. Je voulais dire glisser et déposer le fichier en dehors de l'application. (Cela peut être un glisser-déposer de l'application au bureau, à un dossier ou à l'explorateur Windows) – MadSeb

Répondre

1

Il est possible - lorsque vous démarrez l'opération de glisser/déposer (DoDragDrop), vous passez dans un IDataObject - c'est la clé pour permettre ce que vous voulez.

La méthode la plus simple consiste à utiliser un DataObject normal avec DataFormats.FileDrop et à lui donner le nom du fichier. Malheureusement, ce n'est pas tout à fait ce que vous voulez, mais le moyen rapide et sale pour vous de le faire serait de créer un fichier temporaire et de le passer comme nom. Terminé. La manière la plus difficile est d'implémenter IDataObject et de servir un fichier virtuel (en mémoire) contenant l'image que vous voulez. Il y a un article sur codeplex sur transferring virtual files to windows explorer par glisser-déposer qui devrait vous aider à démarrer. Voir aussi Drag and drop virtual files using IStream