Bonjour,
Quel est l'équivalent de la propriété Location, qui retourne la position de l'objet par rapport au parent, en WinForms pour WPF?
Cordialement,
Bonjour,
Quel est l'équivalent de la propriété Location, qui retourne la position de l'objet par rapport au parent, en WinForms pour WPF?
Cordialement,
en fait y'a pas mais par contre
tu peux avoir les position des objets en fonction de leurs conteneurs
par exemple :
sur un canvas tu as
canvas.gettop et canvas.getleft
sur une grid en fonction
des columns puis des vertical et horizontal aligment
tu peux utiliser ou lire les margins
quel est l'intérêt si ce n'est pas indiscret...
je m'explique, cela peut être intéressant dans le cas où l'on travail avec des Canvas, mais dans ce cas la propriété de dépendance Canvas.X ou Canvas.Y est ton amie...
Mais lorsque l'on travail avec des layout genre Grid ou encore DockPanel, ou WrapPanel, je vois pas trop l'intérêt, puisque si ta bien positionné tes objets et leur disposition par rapport au parent, ils se redimensionnent/déplacent automatiquement.
Ça peut sans doute être utile pour faire du drag-and-drop sur toute l'interface.
oui sauf qu'en général tu contrôle le "drop" sur les éléments qui sont susceptibles de le recevoir... donc le positionnement devient là totalement inutile, ou gadget.
Oui d'accord pas de problème quand on travaille dans un conteneur, mais là dans mon cas, j'ai deux "Window" superposé, quand je clique sur un point de la première fenetre, je veux retrouver le contrôle contenu dans la fenêtre de derrière à l'aide des coordonnées fourni par l'évènement e.GetPosition( this );
Voilà pourquoi j'ai besoin d'une propriété Location, j'ai essayé de faire la mienne en utilisant les propriétés Margin, mais ça me retourne toujours 0, alors que mes contrôles sont bien disposés partout dans le conteneur...
Voici la méthode que j'ai trouvé:
Et ça marche!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 if ( Parent != null && Parent is Visual ) { Location = ( Parent as Visual ).TransformToVisual( this ).Transform( new Point( 0, 0 ) ); Location = new Point( Location.X * -1, Location.Y * -1 ); }
Partager