2010-12-03 2 views
1

다른 실버 라이트 컨트롤 c2가 포함 된 실버 라이트 컨트롤 c1이 있습니다.
아래 코드를 실행하려고 할 때.중첩 컨트롤 + 위쪽, 왼쪽 속성

c1.c2.GetValue(Canvas.LeftProperty) 
c1.c2.GetValue(Canvas.TopProperty) 

결과는 내가 최고 메인 캔버스에 내부 제어 상대에 대한 Left 속성을 얻을 수있는 방법을 항상 0 입니다.

당신은 할 수
+0

그때 C1, 네 약간의 캔버스의 자식 제대로 이해하면? –

+0

예, c1이 캔버스에 추가되었습니다. –

+0

캔버스에 'c1'과'c2'가 어떻게 추가되는지 더 많은 컨텍스트를 보여줄 수 있습니까? – ChrisF

답변

1

다음

var transform = c2.TransformToVisual(c1); 
var relativePoint = transform.Transform(new Point(0, 0)); 
var c2left = c1.GetValue(Canvas.LeftProperty) + relativePoint.X 
var c2top = c1.GetValue(Canvas.TopProperty) + relativePoint.Y 
+1

+1,'c2.TransformToVisual (c1.Parent)'를 사용하고 마지막 두 줄의 표현을 신경 쓸 필요는 없습니다. – AnthonyWJones

+0

@AnthonyWJones : 멋진 아이디어, 감사합니다.) –

관련 문제