2009-10-02 9 views
8

StackPanel에 동적으로 채워진 사본이 있는데, 그 안에있는 요소의 Y 위치가 변경됩니다. 그 StackPanel 내에 특정 엘리먼트를 가지고 StackPanel이 그것의 자식들을 모두 재배치 한 후에 (StackPanel에 상대적으로) Y 위치를 찾고 싶습니다. 반환 된 위치는 StackPanel의 위치가 아니라 내가 타겟팅하는 자식 요소이기 때문에 http://forums.silverlight.net/forums/p/16787/55881.aspx#55881 작동하지 않습니다 StackPanel에서 요소의 위치를 ​​얻는 방법은 무엇입니까?

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 

는이 같은 방법 것으로 나타났습니다.

답변

14

link you posted의 메서드는 올바르게 호출해야 제대로 작동합니다.

는 올바른 UIElement에 그들을 호출 할 필요 -이 경우, RootVisual에에서 element1를 사용하여 당신에게 element1의 전체 위치 줄 것이다 :

var transform = element1.TransformToVisual(Application.Current.RootVisual as FrameworkElement);   
Point absolutePosition = transform.Transform(new Point(0, 0)); 
+0

일을. 나는 그 나이를 찾고 있었고, 실제로 질문에 링크를 따르지 않는 것을 위해 나를 섬기고 있었다. (왜 그 일을하는 것이 싫은가?) – AnthonyWJones

+0

WPF 응용 프로그램에서도 위치를 얻는 방법을 알고 싶다. –

+0

@eranotzap 이것은 WPF 응용 프로그램에서도 작동합니다. http://msdn.microsoft.com/en-us/library/system.windows.media.visual.transformtovisual.aspx –

관련 문제