Comment puis-je créer une toile de ce type - http://www.silverdiagram.net/Projects/SilverDiagram/SilverDiagram_Demo.aspx? Je veux positionner les contrôles exactement alignés les uns aux autres. Je veux aider les utilisateurs à l'aligner correctement en utilisant l'auto-alignement (comme Visual Studio) et en fournissant à l'utilisateur l'échelle.Silverlight - Création d'une toile avec auto-alignement et échelle
Répondre
Le Canvas
est le bon conteneur à utiliser car vous pouvez positionner son contrôle enfant par des coordonnées. Votre problème est plus sur le déplacement des éléments autour, qui est en fait faire glisser &.
Vous devrez gérer les événements de souris: MouseDown
pour sélectionner un élément, MouseMove
pour détecter un glissement et MouseUp
pour le supprimer. Pendant le déplacement ou à la baisse, vous pouvez modifier les coordonnées de l'élément pour l'aligner automatiquement sur une grille ou par rapport aux éléments environnants.
J'ai réussi à réaliser un tel projet dans Silverlight et utilisé Adorner
s pour ajouter des gestionnaires de redimensionnement aux éléments.
J'ai résolu la question de panoramique et de zoom en mettant le Canvas
dans un Viewbox
, qui était dans un ScrollViewer
. Si vous voulez laisser l'utilisateur contrôler le facteur de zoom, appliquez un LayoutTransform
au Canvas
(disponible dans le Toolkit).