2009-10-02 44 views
8

Giả sử tôi có một StackPanel được tự động điền vào bản sao, thay đổi vị trí Y của các phần tử bên trong nó. Tôi có một yếu tố cụ thể trong đó StackPanel mà tôi muốn tìm vị trí Y (liên quan đến StackPanel hoặc cách khác) sau khi StackPanel được thực hiện định vị lại tất cả các con của nó.Cách lấy vị trí của một phần tử trong 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 

tôi nhận thấy rằng phương pháp như thế này: http://forums.silverlight.net/forums/p/16787/55881.aspx#55881 không làm việc kể từ vị trí trở lại là vị trí của StackPanel và không phải là phần tử con tôi đang nhắm mục tiêu.

Trả lời

14

Các phương pháp trong link you posted sẽ hoạt động tốt, miễn là bạn gọi đúng cách.

Bạn cần phải gọi cho họ với UIElement đúng - trong trường hợp này, sử dụng element1 đến RootVisual sẽ cung cấp cho bạn những vị trí đầy element1:

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

+1. Tôi đang tìm kiếm lứa tuổi cho điều đó, phục vụ tôi đúng cho không thực sự theo liên kết trong câu hỏi (tại sao tôi ghét làm điều đó?) – AnthonyWJones

+0

bất kỳ ý tưởng làm thế nào để có được vị trí trong một ứng dụng WPF là tốt? –

+0

@eranotzap Điều này cũng hoạt động trong một ứng dụng WPF. http://msdn.microsoft.com/en-us/library/system.windows.media.visual.transformtovisual.aspx –

Các vấn đề liên quan