[WPF] Comment connaitre la position d’un élément par rapport à un autre ?
Voila une question que je me suis posé et qui, finalement, est simple à résoudre: Comment connaitre la position d’un élément par rapport à un autre ou, dit autrement, comment connaitre la distance qui sépare 2 éléments.
Imaginons le code XAML suivant:
<Canvas>
<Button x:Name="btn"
Canvas.Top="20"
Canvas.Left="50"
Content="Get Postion"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Click="btn_Click"/>
<Rectangle x:Name="rect"
Fill="Black"
Canvas.Top="50"
Canvas.Left="100"
Height="50"
Width="150" />
</Canvas>
Nous avons donc un Canvas qui contient un bouton et un rectange. Si l’on veut connaitre la distance qui sépare le bouton du rectangle, il suffit de faire appel à la méthode TranslatePoint:
private void btn_Click(object sender, RoutedEventArgs e)
{
var point = rect.TranslatePoint(new Point(0, 0), this.btn);
MessageBox.Show(point.X + " " + point.Y);
}
Le résultat nous renvoit les valeur suivantes:
Ce qui est tout à fait correct: il y a bien un écart de 50 entre le bord gauche du bouton et le bord gauche du rectangle, ainsi qu’un écart de 20 entre les bord supérieurs des éléments 
Simple mais efficace non 
A+
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :