2012-07-03 3 views
2

나는 여러 어린이가있는 Canvas이며 각 어린이는 MouseDragElementBehavior입니다. 이런 식으로 뭔가가 :끌기 후 캔버스 자식 요소의 위치를 ​​가져옵니다.

MouseDragElementBehavior drag = new MouseDragElementBehavior(); 
drag.Attach(ellipse); 

내가 아이를 드래그하여 드래그 후 그 아이의 새로운 위치를 얻고 싶은, 그래서 이런 짓을 :

double left = Canvas.GetLeft(ellipse); 
double top = Canvas.GetTop(ellipse); 

문제는 내가 항상 얻을 수 있다는 것입니다 요소가 드래그되지 않은 것처럼 드래그 한 후 위쪽과 왼쪽에 대해 동일한 값. 요소의 새 위치를 얻으려면 어떻게해야합니까?

답변

0

이 동작이 실제로 작동하는 방법에 대한 유용한 문서를 찾을 수 없지만 Canvas.Left/.Top 대신 여백을 설정하여 컨트롤을 "이동"한다고 생각합니다. 여백을 확인하여 변경 사항을 확인 했습니까? 캔버스 이외의 컨테이너 (예 : Grid 또는 StackPanel)와의 호환성을 확장하므로 여백 설정이 훨씬 유용합니다.

+0

나는 cyborg37을 확인할 것입니다. – canha

+0

@JDB, 여백은 그대로 있습니다. 부모 요소가'Canvas'이면 마진은'0,0,0,0'이고, 부모 요소가 규칙적인'Grid' 일 때 마진은 항상 요소의 초기 위치에 남습니다. 'Margins : 102.929,85.605,0,0' ...이 'MouseDragElementBehaviour'는 매우 혼란 스럽습니다. –

+0

@DimitryK - Cool. 아마도 당신이 발견 한 유용한 정보를 별도의 답변으로 게시하여 인식하고 상향 조정할 수 있습니다. – JDB

관련 문제