Wie die Position eines Elements in einem Stackpanel zu bekommen?
-
19-09-2019 - |
Frage
Sagen, dass ich ein Stackpanel, die mit Kopie dynamisch gefüllt werden, die Y-Position der Elemente im Innern zu ändern. Ich habe ein bestimmtes Element innerhalb dieser Stackpanel, dass ich die Y-Position (bezogen auf die Stackpanel oder aus anderen Gründen) nach dem Stackpanel finden will Kinder getan wird Neupositionierung all seine.
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
Ich habe bemerkt, dass Methoden wie folgt aus: http: //forums.silverlight .net / Foren / p / 16787 / 55881.aspx # 55881 nicht funktionieren, da die Position zurückgeführt ist, die Position des Stackpanel und nicht das Kind Element ich bin Targeting.
Lösung
Die in den verlinken Sie auf dem Laufenden sollte funktionieren , sofern man sie richtig nennen.
Sie müssen sie mit dem richtigen UIElement nennen - in diesem Fall auf die RootVisual mit element1 erhalten Sie die volle Position element1
geben:
var transform = element1.TransformToVisual(Application.Current.RootVisual as FrameworkElement);
Point absolutePosition = transform.Transform(new Point(0, 0));