2010-05-09 5 views
1

Silverlight 요소를 창의 한 부분에서 다른 부분으로 끌어서 놓기 (슬라이드)하려고합니다.Silverlight 끌어서 놓기 (캔버스 없음)

요소에 MouseLeftButtonDown, MouseMove 및 MouseLeftButtonUp 이벤트 처리기를 구현했지만 약간 문제가 발생했습니다.

필자가 보았던 모든 예제에는 Canvas.Left 및 Canvas.Top 속성을 설정하여 요소를 이동하는 것이 포함되어 있습니다. 조작하려는 요소 중 캔버스 안에 살 수있는 요소는 없습니다. 마우스의 좌표에 따라 드래그되는 요소의 절대 위치를 설정하는 방법이 있습니까? 아니면 내가 놓친이 문제에 대한 사전 패키지 된 솔루션이 있습니까?

+0

내 프로그램에서 똑같은 문제가 발생했습니다. 나는 캔버스 컨트롤과 관련된 모든 종류의 자습서를 보았지만 작업하고 있던 컨트롤에 맞도록 시간을 보냈지 만 전혀 작동하지 않았지만 아무도 훌륭한 질문과 훌륭한 대답 – AmbiguousX

답변

3

모든 패널이지만 Canvas는 자녀를 배치하기 위해 어떤 종류의 제약 조건을 사용합니다. Canvas 만 절대 위치 지정을 사용할 수 있습니다. 그래서 드래그 앤 드롭을 구현하는 유일한 방법이라고 생각합니다.

기존 패널 위에 캔버스를 자유롭게 사용할 수 있습니다. 드래그 된 요소를 원래 부모에서 제거하고 캔버스에 넣거나 (일종의 드래그하여 드래그) 마우스를 올리면됩니다.

+0

MouseLeftButtonDown 이벤트가 발생하면 Canvas를 동적으로 만들고 Canvas를 사용하여 물건을 드래그하고 MouseLeftButtonUp이 실행될 때 Canvas를 삭제하여 동적으로 Canvas를 만듭니다. 종류의 hackish, 그러나 그것은 작동합니다. – JustinT

0

Canvas뿐만 아니라 컨테이너 내부에 항목을 절대적으로 배치하는 한 가지 방법은 Left/Top 속성 대신 변형을 사용하는 것입니다. 예를 들어 Left = 50 Top = 80으로 설정하려면 변환을 통해 여백 값을 수정할 수 있습니다.