Comment obtenir la position d'un élément dans un StackPanel?
-
19-09-2019 - |
Question
Dire que j'ai un StackPanel qui obtient dynamiquement rempli de copie, en changeant la position Y d'éléments à l'intérieur. J'ai un élément spécifique dans ce StackPanel que je veux trouver la position Y (par rapport au StackPanel ou autrement) après la StackPanel se fait repositionner l'ensemble de ses enfants.
StackPanel sp = new StackPanel();
sp.Children.Add(someTextBlock);
sp.Children.Add(element1);
sp.Children.Add(element2);
...
someTextBlock.Text = "Lorem ipsum dolor..." // some text that pushes children of > index down
// element1 got pushed down to some unknown position based on text length
// now want to find the Y position of element1
J'ai remarqué que les méthodes comme ceci: http: //forums.silverlight .net / forums / p / 16787 / 55881.aspx # 55881 ne fonctionnent pas depuis la position retournée est la position du StackPanel et non l'élément enfant je cible.
La solution
Les méthodes dans le lien rel="noreferrer"> posté devrait fonctionner correctement , à condition que vous les appelez correctement.
Vous avez besoin de les appeler avec le UIElement correct - dans ce cas, en utilisant element1 au RootVisual vous donnera la position pleine de element1
:
var transform = element1.TransformToVisual(Application.Current.RootVisual as FrameworkElement);
Point absolutePosition = transform.Transform(new Point(0, 0));