문제

동적으로 생성 된 컨트롤을 드래그 앤 삭제하는 방법 내 코드는 아래에 표시되어 있습니다.

 Button btnTask = new Button();
 btnTask.Content = _myCustomTasks[iCtr].Description;
 btnTask.Background = _myCustomTasks[iCtr].TaskColor;
 stackPanel.Children.Add(btnTask);

내 요구 사항은 동적으로 생성 된 버튼 컨트롤을 드래그 앤 드롭하는 것입니다. 미리 감사드립니다

도움이 되었습니까?

해결책

  1. 디자이너로 드래그하고 떨어진 컨트롤은 동적으로 만들어지지 않습니다. 그들은 정적으로 만들어지고 재현됩니다. 대부분의 경우 툴박스 에서이 컨트롤에 액세스 할 수 있습니다.
  2. 버튼과 같은 코드에서 선언 된 컨트롤은 동적으로 생성됩니다. 그들은 프로그래밍 방식으로 창조되고 재현되어야합니다. 이 컨트롤은 뒤의 코드에만 해당됩니다.

그러나 동적으로 생성 된 컨트롤을 사용하면 자리 표시 자 (이 제어가 렌더링되지 않음)를 사용하여 객체를 배치하는 것이 일반적인 관행입니다.

그렇게하려면 ...

  1. 버튼이 원하는 곳에 자리 표시자를 드래그 앤 드롭하십시오. (디자이너).
  2. 프로그래밍 방식으로 자리 표시 자에 버튼을 추가하십시오. (뒤에 코드)

예를 들어...

Button btnTask = new Button();
btnTask.Content = _myCustomTasks[iCtr].Description;
btnTask.Background = _myCustomTasks[iCtr].TaskColor;
PlaceHolder1.Controls.Add(btnTask);

도움이되기를 바랍니다 ...

다른 팁

Silverlight에서 Drag-n-drop에 대한 나의 제안 :

  1. 캔버스 레이아웃을 정의하십시오.

  2. 일반 레이아웃 (그리드 등)에서 Drag-N-Drop으로 객체를 선택할 때 픽셀 포지셔닝을 허용하는 기본 캔버스로 객체를 이동하십시오. 캔버스를 현재 레이아웃 위에 움직입니다.

  3. 캔버스 위치를 업데이트하여 객체를 드래그하십시오.

  4. 드래그를 마치면 적절한 위치에서 객체를 일반 레이아웃으로 되돌려 놓으십시오 (적절한 연결 지점을 찾으려면 최상위 레이아웃을 통해 낚시해야 할 수도 있음). 캔버스 레이어를 일반 레이아웃보다 낮은 z 주문으로 반환하십시오.

이것은 내가 필요한 간단한 드래그 드롭 시스템에 꽤 잘 작동했습니다.

Telerik Controls는 또한 Drag-N-Drop 프레임 워크를 제공합니다.

-제프

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top