2017-09-14 1 views
0

J'ai plusieurs éléments d'interface utilisateur dans un objet de canevas "CanvasContain". Au déplacement de la souris, je veux décaler tous les éléments de l'interface utilisateur dans ce canevas. J'ai essayé avec le nom de la toile, il fonctionne très bien:Comment changer la position d'un enfant en toile lors d'un mouvement de souris?

foreach(UIElement child in CanvasContain.Children) 
{ 
    if (child != null) 
    { 
     Canvas2.Offset -= position - LastMousePosition; 
     Canvas3.Offset -= position - LastMousePosition; 
    } 
} 

Mais quand j'essaie avec child.offset il ne fonctionne pas. Comment puis-je changer le décalage dynamiquement?

+0

btw, j'utilise ZoomableCanvas pour le zomming et le panoramique – srinivas

Répondre

2

Vous devez ajuster la toile gauche et les propriétés Top pour chaque enfant:

foreach(UIElement child in CanvasContain.Children) 
{ 
    double x = Canvas.GetLeft(child); 
    double y = Canvas.GetTop(child); 
    Canvas.SetLeft(child, x - (position.X - LastMousePosition.X)); 
    Canvas.SetTop (child, y - (position.Y - LastMousePosition.Y)); 
} 

Remarque j'ai laissé tomber le test child != null qui n'est pas nécessaire.