2010-10-23 19 views
0

suivant est mon code pour glisser-déposer dans wpf. J'ai utilisé le même code dans windowform pour glisser et déposer des images, mais je ne semble pas fonctionner pour wpf Pouvez-vous aider?Faites glisser et déposer dans WPF C#

<Image Height="464" Name="PictureBox" Stretch="Uniform" Width="769" AllowDrop="True" DragEnter="PictureBox_DragEnter" Drop="PictureBox_Drop" /> 


    private void PictureBox_DragEnter(object sender, DragEventArgs e) 

    { 
     if (e.Data.GetDataPresent(DataFormats.Bitmap, false) == true) 
      e.Effects = DragDropEffects.None; 
    } 

    private void PictureBox_Drop(object sender, DragEventArgs e) 
    { 
     string[] files = (string[])e.Data.GetData(DataFormats.Bitmap); 
     // images is (arraylist for multi pictures. 
     if (images == null) 
      images = new ArrayList(); 
     for (int i = 0; i < files.Length; i++) 
     { 
      BitmapImage bitmap = new BitmapImage(); 
      bitmap.BeginInit(); 
      bitmap.UriSource = new Uri(files[i]); 
      bitmap.EndInit(); 
      images.Add(bitmap);    
     } 
     currentPicture = images.Count; 
     btn_Next_Click(sender, e); 
     MessageBox.Show("images " + images.Count); 
    } 

Répondre

0

À mon avis, ce code est incorrect:

if (e.Data.GetDataPresent(DataFormats.Bitmap, false) == true) 
     e.Effects = DragDropEffects.None; 

Vérifier == false.

En outre, DataFormats.Bitmap a le type Image, pas la chaîne [].

Je coderez si:

private void DragSource_MouseMove(object sender, System.Windows.Input.MouseEventArgs e) 
{ 
    //... 
    DataObject data = new DataObject("Object", new string[]{"1", "2", "3"}); 
    DragDropEffects effects = DragDrop.DoDragDrop(this.draggingElement, data, DragDropEffects.Move); 
    //... 
} 

private void PictureBox_Drop(object sender, DragEventArgs e) 
{ 
    string[] files = (string[])e.Data.GetData("Object"); 
    //... 
}