none
Drag and Drop User Control RRS feed

  • Pergunta

  • Bom dia pessoal,

     

    Gostaria de saber como posso fazer Drag and Drop de um UserControl.

    Segui alguns tutoriais encontrados na internet, mas não consegui obter o resultado desejado.

    Um dos tutoriais...

    http://msmvps.com/blogs/bsonnino/archive/2008/01/09/movendo-shapes-com-o-mouse-em-wpf.aspx

     

    No Drag and Drop que pretendo fazer, desejo que ele se mova por completo. Entretanto apenas se o usuário clicar em algumas áreas do UserControl, visto que existe um TextBox, e não desejo que seja feito o Drag and Drop quando o usuário clicar no TextBox, e sim que ele possa editar o seu texto (por exemplo).

     

    Agradeço desde já,

    Ewerton.

    segunda-feira, 26 de julho de 2010 13:07

Respostas

  • Bom eh super simples.

    Eu fiz Drag de imagens, vc deve setar a propriedade AllowDrop de seu componente para true, e depois utilizar esses eventos.

        private void DragMouse(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 Canvas_DragEnter(object sender, DragEventArgs e)
        {
          if (e.Data.GetDataPresent(typeof(Image)))
          {        
            e.Effects = DragDropEffects.Copy;  
          }      
        }
    
        private void Canvas_Drop(object sender, DragEventArgs e)
        {
          ImageSource image = e.Data.GetData(typeof(ImageSource)) as ImageSource;
          Image imageControl = new Image() { Width = image.Width, Height = image.Height, Source = image, Stretch=Stretch.Uniform};
          Canvas.SetLeft(imageControl, e.GetPosition(this.CanvasCentro).X);
          Canvas.SetTop(imageControl, e.GetPosition(this.CanvasCentro).Y);
          this.CanvasCentro.Children.Add(imageControl);      
        }
    

    Quem sabe um dia os DataSets se extinguirão?
    sexta-feira, 30 de julho de 2010 07:43