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...
Partager