Перетащите в WPF C # - PullRequest
       8

Перетащите в WPF C #

0 голосов
/ 23 октября 2010

следующий мой код для перетаскивания в wpf. Я использовал тот же код в форме окна для перетаскивания изображений, но я не могу работать с wpf. Вы можете помочь?

 <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);
    }

1 Ответ

0 голосов
/ 23 октября 2010

На мой взгляд, этот код неверен:

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

Проверьте == ложь.

Также DataFormats.Bitmap имеет тип изображения, а не строку [].

Я бы написал так:

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");
    //...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...