Bonjour,

je cherche à faire un drag and drop avec WPF entre une listbox et des images présentes dans un explorateur windows.

Ma question:
Lorsque je fais un drag and drop de mon fichier vers ma listbox, la méthode listView1_DragEnter est bien appelée. (FileDrop !!!!!!!!!!!!! est bien écrit dans la console).

Comment appeler la méthode listView1_DragDrop qui contient l'action à réaliser pour ajouter ma nouvelle photo ?

Quel est le lien entre les méthodes MouseMove et DragEnter ?


J'ai lu un article intéressant, Drag And Drop avec Windows Presentation Foundation par Thomas Lebrun, mais je n'ai pas tout compris.

En xaml, j'ai défini une listbox:
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
<ListBox Grid.Row="2" Name="m_LstListVideos" AllowDrop="True"  DragEnter="listView1_DragEnter" MouseMove="MouseMoveLstListVideos">

et dans le code behind les méthodes suivantes:
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
        private void listView1_DragEnter(object sender, System.Windows.DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                Console.WriteLine("FileDrop !!!!!!!!!!!!!");
                e.Effects = DragDropEffects.Copy;
            }
            else
            {
                Console.WriteLine("no !!!!!");
                e.Effects = DragDropEffects.None;
            }
        }
 
        private void listView1_DragDrop(object sender, System.Windows.DragEventArgs e)
        {
            Console.WriteLine("dans listView1_DragDrop");
            if (e.Effects == DragDropEffects.Copy)
            {
                string[] filenames = (string[])e.Data.GetData(DataFormats.FileDrop);
 
                foreach (string filename in filenames)
                {
                    this.m_LstListVideos.Items.Add(filename);
                }
            }
        }
 
 
       private void MouseMoveLstListVideos(object sender, MouseEventArgs e)
        {
             if (e.LeftButton == MouseButtonState.Pressed)
       {
             DragDropEffects effects;
             DataObject obj = new DataObject();
             obj.SetData(typeof(string), ((Image)((ListBoxItem)this.m_LstListVideos.SelectedItem).Content).Source.ToString());
             effects = DragDrop.DoDragDrop(this.m_LstListVideos, obj, DragDropEffects.Copy | DragDropEffects.Move);
       }
 
        }

Merci pour les réponses...