开发者_开发问答following is my code for drag and drop in wpf. i used the same code in windowform for drag and drop images but i does not seem to work for wpf Can you help ?
<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);
}
In my opinion this code is incorrect:
if (e.Data.GetDataPresent(DataFormats.Bitmap, false) == true)
e.Effects = DragDropEffects.None;
Check for ==false.
Also, DataFormats.Bitmap has Image type, not string[].
I would code it so:
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");
//...
}
精彩评论