C#/WPF

WPF Drag, Drop이 되는 ListBox

기공이 2018. 2. 27. 09:45

이전 포스트(2018/01/30 - [C#/WPF] - WPF 한 ListView(ListBox)에서 Drag Drop)에서 

ListBox에 Drag & Drop이 가능하도록 해보았었습니다.


하지만 단일 Item 만 Drag & Drop이 가능했었던 점, Drop이 될 위치가 보이지 않는 점 등 굉장히 기초적인 내용이였습니다.



이제 위에 서술된 내용 + 자잘한 내용등을 수정하여 재사용이 가능한 사용자 정의 컨트롤을 만들었습니다.


※ ListBox 의 Item 내용은 유일(Unique)해야 합니다. (Remove 관련)

※ Item을 꼭 GGData형으로 할 이유는 없으며, GGData 내부 Item의 형을 바꾸셔도 되고,

GGData형을 사용하지 않을 경우 cs파일에서 GGData를 원하는 형으로 바꾸시면 됩니다. (ex. string)

(GGData는 재사용성을 위해 만든 것이기 때문입니다.)

※ ListBox의 Remove, Insert를 사용하기 때문에 ItemsSource를 사용할 수 없습니다.



ListBoxDragDrop.xaml

ListBoxDragDrop.xaml.cs

간단한 예제 프로젝트를 GitHub에 올려놓았으며 ListBoxDD_GiGong (GitHub)


위의 xaml파일, cs파일을 사용하시려는 프로젝트에 포함 시키신 뒤 사용하시면 됩니다.

(한번은 빌드를 하신 후 사용하시는 걸 권장)


※ ListBox말고 ListView로 바꾸셔도 그대로 작동합니다.


ListBox로서 추가적인 기능이 필요하시면 수정하셔서 사용하시면 됩니다.



또한 Drag Drop관련 버그, 개선사항을 찾으시면 댓글로 남겨주세요!