如何获取StackPanel中元素的位置?

rob*_*cop 8 c# silverlight stackpanel

假设我有一个动态填充副本的StackPanel,更改其中元素的Y位置.我在StackPanel中有一个特定元素,我希望在StackPanel重新定位其所有子节点后找到(相对于StackPanel或其他方式)的Y位置.

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
Run Code Online (Sandbox Code Playgroud)

我注意到这样的方法:http://forums.silverlight.net/forums/p/16787/55881.aspx#55881不起作用,因为返回的位置是StackPanel的位置而不是子元素我是定位.

Ree*_*sey 14

您发布链接中的方法应该可以正常工作,前提是您正确调用它们.

您需要使用正确的UIElement调用它们 - 在这种情况下,使用element1到RootVisual将为您提供以下完整位置element1:

var transform = element1.TransformToVisual(Application.Current.RootVisual as FrameworkElement);        
Point absolutePosition = transform.Transform(new Point(0, 0));
Run Code Online (Sandbox Code Playgroud)