2011-02-02 11 views
7

Pracuję nad aplikacją WPF, która jest w istocie edytorem WYSIWYG i używa funkcji przeciągania i upuszczania. Mam funkcjonalność "przeciągnij i upuść" działa, ale muszę uczynić ją bardziej intuicyjną i przyjazną dla użytkownika. Częścią tego będzie faktyczne pokazanie przeciągniętego przedmiotu. Jaki jest najłatwiejszy sposób na zrobienie tego? Elementy, które przeciągam, nie są niczym specjalnym, ale nie jestem nawet pewien, gdzie szukać, jak to zrobić.Jak wyświetlić element, który jest przeciągany w WPF?

Odpowiedz

8

Będziesz musiał użyć między innymi: DragDrop.GiveFeedback; Jaime ma świetną wersję blog post opisującą różne scenariusze, których dotyczy opisywany przez ciebie.

Trivial przykład z Jaime na blogu w kontaktach z manipulacji kursora ...

 private void StartDragCustomCursor(MouseEventArgs e) 
     { 

      GiveFeedbackEventHandler handler = new GiveFeedbackEventHandler(DragSource_GiveFeedback); 
      this.DragSource.GiveFeedback += handler; 
      IsDragging = true; 
      DataObject data = new DataObject(System.Windows.DataFormats.Text.ToString(), "abcd"); 
      DragDropEffects de = DragDrop.DoDragDrop(this.DragSource, data, DragDropEffects.Move); 
      this.DragSource.GiveFeedback -= handler; 
      IsDragging = false; 
     } 

     void DragSource_GiveFeedback(object sender, GiveFeedbackEventArgs e) 
     { 
       try 
       { 
        //This loads the cursor from a stream .. 
        if (_allOpsCursor == null) 
        { 
         using (Stream cursorStream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(
      "SimplestDragDrop.DDIcon.cur")) 
         { 
          _allOpsCursor = new Cursor(cursorStream); 
         } 
        } 
        Mouse.SetCursor(_allOpsCursor); 

        e.UseDefaultCursors = false; 
        e.Handled = true; 
       } 
       finally { } 
     } 
Powiązane problemy