2010-06-08 6 views
2

우리는 디자이너가 몇 가지 수정 된 방식으로 사용자 정의하고자하는 특별한 목록 상자 컨트롤을 구축하고 있습니다.WPF : 일반적인 목록 상자 왼쪽 드래그 선택 비헤이비어를 만드는 대신 중간 마우스를 사용하는 방법은 무엇입니까?

그들이보고 싶은 한 가지 사실은 가운데 버튼 드래그가 왼쪽 버튼 드래그가 정상적으로 수행하는 작업을 수행한다는 것입니다. (우리는 왼쪽 드래그를 다른 것으로 드래그 앤 드롭합니다.)

  1. 를, 내가 아래를 클릭하고 내가 드래그 곳으로 확장 선택 시작 버튼을 누른 상태에서 드래그하는 동안 :

    는 그래서 드래그 왼쪽 목록 상자의 기본 구현에서 수행하는 두 가지 핵심 기능을 필요로한다.

  2. 목록 상자 영역 밖으로 드래그하는 동안 해당 방향으로 스크롤 가능한 공간이 있으면 스크롤합니다.

이 기능을 손으로 복제하기 전에 ListBox를 마우스 왼쪽 단추로 드래그 이벤트가 발생한다고 생각하게하는 쉬운 방법이 있습니까? 대신 중간 마우스를 가져 오는 중입니까?

답변

0

MouseDown가 도움이 될 것입니다. 모든 마우스를 모니터링합니다. 여기에 좋은 기사가 있습니다. 기사에서 http://blogs.msdn.com/b/nickkramer/archive/2005/06/13/428754.aspx

:

우리는 MouseLeftButtonDown과 MouseRightButtonDown 이벤트,하지만 MouseMiddleButtonDown 이벤트가 있습니다. 연결된 이벤트 Mouse.MouseDown을 사용하여 중간 단추를 가져올 수 있습니다. 은 모든 마우스 단추를 수신하고 은 args.ChangedButton == MouseButton.Middle을 확인합니다.

+0

아, 중간 마우스 단추를 사용하는 방법이 구워진다는 것을 추가하겠습니다. –

+0

제 질문은 중간 마우스 이벤트를 얻는 방법에 관한 것이 아니라 목록 상자로 전달할 수있는 마우스 왼쪽 이벤트로 캡처하는 중간 마우스 이벤트를 다시 매핑하는 방법에 관한 것입니다. – scobi

+0

ListBox는 끌어서 놓기를 자동으로 구현하지 않으므로 내가 무엇을 묻고 있는지 확실하지 않습니다. WPF는 드래그 앤 드롭을 위해 프레임 워크를 제공하지만 켜기 속성이나 끌기 이벤트가 자동으로 끌기를 처리합니다. 여전히 mousedown 또는 PreviewMouseDown을 캡처해야합니다. 왼쪽 단추에 넣을 코드는 무엇이든 갈 수 있으며 이벤트 인수를 사용하여 가운데 단추가 걸려 있는지 확인할 수 있습니다. 다음과 같이하십시오. http://diptimayapatra.wordpress.com/2010/01/16/drag-and-drop-item-in-listbox-in-wpf/ –

관련 문제