我正在尝试将一个图像(树视图中的此图像)移动到其他图像中。 使用以下处理程序
private void DragImage(object sender, MouseButtonEventArgs e)
{
Image image = e.Source as Image;
DataObject data = new DataObject(typeof(ImageSource), image.Source);
DragDrop.DoDragDrop(image, data, DragDropEffects.Copy);
}
private void DropImage(object sender, DragEventArgs e)
{
ImageSource image = e.Data.GetData(typeof(ImageSource)) as ImageSource;
Image imageControl = new Image() { Width = 50, Height = 30, Source = image };
Canvas.SetLeft(imageControl, e.GetPosition(this.Canvas).X);
Canvas.SetTop(imageControl, e.GetPosition(this.Canvas).Y);
this.Canvas.Children.Add(imageControl);
}
一旦我将图像放在画布上。它坚持下去。我想再次在同一个画布上移动它。 你能建议一下它是如何实现的吗? 提前致谢
答案 0 :(得分:1)
通过代码中的一些更改解决了这个问题。
private void DragImage(object sender, MouseButtonEventArgs e)
{
Image image = e.Source as Image;
DataObject data = new DataObject(typeof(ImageSource), image.Source);
DragDrop.DoDragDrop(image, data, DragDropEffects.All);
moving = true;
}
private void DropImage(object sender, DragEventArgs e)
{
Image imageControl = new Image();
if ((e.Data.GetData(typeof(ImageSource)) != null))
{
ImageSource image = e.Data.GetData(typeof(ImageSource)) as ImageSource;
imageControl = new Image() { Width = 50, Height = 30, Source = image };
}
else
{
if ((e.Data.GetData(typeof(Image)) != null))
{
Image image = e.Data.GetData(typeof(Image)) as Image;
imageControl = image;
if (this.Canvas.Children.Contains(image))
{
this.Canvas.Children.Remove(image);
}
}
}
Canvas.SetLeft(imageControl, e.GetPosition(this.Canvas).X);
Canvas.SetTop(imageControl, e.GetPosition(this.Canvas).Y);
imageControl.MouseLeftButtonDown += imageControl_MouseLeftButtonDown;
this.Canvas.Children.Add(imageControl);
}
void imageControl_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Image image = e.Source as Image;
DataObject data = new DataObject(typeof(Image), image);
DragDrop.DoDragDrop(image, data, DragDropEffects.All);
moving = true;
}