2016-03-20 14 views
1

Imageimg2'dan Imageimg1'a sürükleyip bırakmam gerekiyor. Bu, img1 üzerinde sürüklediğimde img2'u kopyalamak istediğim anlamına gelir. Program başlatılıyor, ancak Imageimg1 hedefine, Imageimg2'u sürükledikten sonra değişmiyor.Görüntü sürükle ve bırak (WPF Penceresi)

Bu sorunu çözmek için nasıl çözülür?

aşağıda Kodum:

XAML:

<Canvas Name="va"> 
     <Image Name="img1" Height="100" Width="100" AllowDrop="True" Drop="img1_Drop" /> 
     <Image Name="img2" Height="100" Width="100" Source="Resources/eye.bmp" 
       MouseLeftButtonDown="img2_MouseLeftButtonDown" AllowDrop="True" /> 
</Canvas> 

C# kodu:

private void img2_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    Image image = e.Source as Image; 
    DataObject data = new DataObject(typeof(ImageSource), image.Source); 
    DragDrop.DoDragDrop(image, data, DragDropEffects.All); 
} 

private void img1_Drop(object sender, DragEventArgs e) 
{ 
    Image imageControl = (Image)sender; 
    if ((e.Data.GetData(typeof(ImageSource)) != null)) 
    { 
     ImageSource image = e.Data.GetData(typeof(ImageSource)) as ImageSource; 
     imageControl = new Image() { Width = 100, Height = 100, Source = image }; 
     img1 = imageControl; 
    } 
} 
+0

Zihin:

yerine basitçe img1 ait Source özelliği atamak gerekir. –

+0

İşte güzel örnek https://www.strathweb.com/2012/06/drag-and-drop-files-to-wpf-application-and-asynchronously-upload-to-asp-net-web-api/ –

cevap

2

img1 = imageControl; yeni eklemez atanıyor Tuvale görüntü kontrolü. WPF, bir `Window` değil, bir` Form` olduğunu

img1.Source = (ImageSource)e.Data.GetData(typeof(ImageSource)); 
+0

Artı 1 ... kısıtlamayı atlamak ne kadar kolay :) –