2009-02-04 11 views
10

Ora che posso creare utili controlli utente in WPF (grazie a this stackoverflow answer) voglio essere in grado di mettere numerosi controlli utente su una pagina in due colonne e consentire all'utente di essere in grado di spostarli in base alle preferenze, trascinando il quelli che usano di più in alto, ecc.Come abilitare l'utente a trascinare/rilasciare i controlli utente WPF in qualsiasi punto della pagina?

Qualcuno può indicarmi codice, esercitazioni, ecc. che fanno questo? Posso immaginare che questo è stato reso abbastanza facile da fare in WPF.

+2

Sì, puoi immaginarlo. Dovrai. :) – Beska

risposta

4

Here è un post di blog per iniziare sulla funzionalità di trascinamento della selezione in WPF.

Buon divertimento.

0

So che questo non è esattamente quello che ti serve ma potrebbe farti chiudere !!!

Martin Grayson ha un progetto su Codeplex chiamato Blacklight ... Controlla il pannello del dock di trascinamento !!!

1

Una serie di blog posts che gestiscono il trascinamento della selezione utilizzando le proprietà associate.

0

Per riferimento futuro, c'è una grande libreria su CodeProject che ha un DragCanvas che consente di trascinare tutti i controlli posizionati su di esso:

http://www.codeproject.com/KB/WPF/WPFJoshSmith.aspx

Contiene anche un CenteredContentControl se si vuole fare " allegati "tra i controlli.

0

Correzione: "Posso immaginare che questo è stato reso abbastanza facile da fare in WPF"

private void Control_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { 
     isDragging = true; 
     var draggableControl = sender as UserControl; 
     clickPosition = e.GetPosition(this.Parent as UIElement); 
     var transform = RenderTransform as TranslateTransform; 
     if (transform != null) { 
      clickPosition.X -= transform.X; 
      clickPosition.Y -= transform.Y; 
     } 
     draggableControl.CaptureMouse(); 
}