2012-04-16 4 views
2

저는 사각형이있는 ItemsControl (테두리 및 기본 컨트롤로 표시됨)로 구성된 usercontrol을 가지고있는 앱이 있습니다. 체스 판처럼 생각하십시오.ItemsControl을 메트로로 드래그 앤 드롭 (C#/XAML)

내 ItemTemplate은 경계로 구성되어 있으므로 GridView 또는 ListView와 같은 드래그 & 드롭을 기본적으로 지원하지 않습니다. 이전에 GridView와 ListView를 사용하여 사각형을 만들었습니다. 그러나 GUI가 너무 느려졌 기 때문에 간단한 테두리로 전환하여 더 빠르게 만들었습니다.

조작 이벤트를 연결함으로써 나는 적어도 내 경계와 그 내용 (적어도 GUI와 관련하여)에 대한 드래그 동작을 얻을 수있었습니다. 그러나 사각형 (테두리)을 다른 사각형으로 드래그하려고하면 놓기 이벤트가 발생하지 않습니다. 목표 사각형이 무엇인지 알아야합니다.

내가 내 드래그를하고 있기 때문에 & 드롭 기능을 직접 사용하면 테두리의 드롭 이벤트에 연결해야 할 필요가 있지만 무엇을해야합니까?

또한 국경 이벤트 인 PointerEntered, PointerMoved 등을 구독하여 어떤 사각형이 끝났는지 확인하고 단추를 놓으면 대상 사각형을 알 수 있습니다. 이것은 (오른쪽과 아래) 두 방향으로 만 작동하는 것처럼 보이지만 포인터 이벤트는 이상하거나 왼쪽으로 움직일 때 시작되지 않습니다. 나는 항목 (사각형)이 다른 ZIndex를 가지며 이벤트 발사에 영향을 줄 수 있다고 생각했습니다.

저는 지금 몇 시간 동안이 문제에 시달렸으며 도움을 많이 주셨습니다.

+0

DragEnter/DragOver/DragLeave 및 Drop 이벤트를 사용해 보셨습니까? –

답변

0

첨부 된 속성을 만들고 테두리 외부의 부모 컨트롤에 연결 한 다음 기본 끌어서 놓기를 ItemTemplate의 TargetType에 배치합니다.

PreviewMouseUp 및 PreviewMouseDown 이벤트에 연결합니다. 이것의

더 여기 WPF Tutorial Drag and Drop

0

발견 당신은 당신이 & 드롭을 드래그하여 원하는대로의 상단에 Thumb 객체를 포함해야합니다. Thumb 개체는 필요한 이벤트를 발생시키고 이러한 이벤트에서 원하는 모든 동작을 처리 할 수 ​​있습니다. 예를 들어 기본 개체를 드래그하여 시뮬레이션하도록 캔버스에서 기본 개체를 이동할 수 있습니다.

시작하려면 the MSDN page of Thumb을 살펴보십시오.

그런 다음 Thumb 알림을 받으면 어떤 방식 으로든 내 기본을 파악하고 Canvas.SetLeft/Top (object, my new coordinates)으로 전화하십시오. 일반적으로 새로운 좌표는 Canvas.GetLeft/Top(object) + args.Horizontal/VerticalChange과 같습니다.

알아 낸대로 Canvas을 사용하고 Grid 또는 ListView 대신에 직접 개체를 배치해야합니다.