마우스 버튼을 누르고있는 동안 WPF ListBox가 MouseMove 이벤트를 가져 오면 목록 상자의 선택이 변경됩니다. 즉, 항목 # 1에서 마우스를 클릭 한 다음 항목 # 2 위로 드래그하면 항목 # 1이 선택 취소되고 항목 # 2가 대신 선택됩니다. 어떻게 이것을 막을 수 있습니까?레이아웃을 변경할 때 WPF ListBox가 마우스로 항목을 선택하지 못하도록합니다.
짧은 버전입니다. 좀 더 긴 버전은 다음과 같습니다. 사용자가 ListBox에서 항목을 두 번 클릭하면 ListBox 위에 다른 컨트롤을 표시하는 등 내 레이아웃을 다른 방식으로 변경합니다. 이렇게하면 ListBox가 아래쪽으로 이동합니다. 즉 사용자가 두 번 클릭했을 때와 다른 ListBoxItem 위에 마우스가 놓이게됩니다.
DoubleClick 이벤트 (마우스 다운 이벤트)에 대한 응답으로 이러한 레이아웃을 변경 했으므로이 레이아웃 변경이 완료 될 때 마우스 단추가 여전히 눌러져있을 가능성이 매우 높습니다. 즉, WPF는 ListBox MouseMove 이벤트 (ListBox를 기준으로 마우스의 위치가 변경된 이후) ListBox는 이것을 드래그로 처리하고 마우스 아래에있는 이벤트를 선택합니다.
두 번 클릭 이벤트가 발생하는 시간과 사용자가 마우스를 놓은 시간 (레이아웃이 변경된 후) 사이에서 선택 사항을 변경하지 않으려합니다. 나는 이것을 달성하는 가장 간단한 방법은 "드래그에 대한 선택 변경"동작을 비활성화하는 것이지만 다른 제안에 대해서는 개방적이라고 생각합니다.
더블 클릭으로 선택을 "고정"하고 마우스 업까지 변경할 수 없게하려면 어떻게해야합니까?
목록 항목의 드래그 작업 중에 선택 변경 사항을 해결하는 데 도움이되었습니다. 감사. –
마우스 다운 이벤트에서 선택한 항목을 제거하면'ParentSelector'가'null'이됩니다. 이 문제를 해결하기 위해'ParentSelector? .ReleaseMouseCapture()'null 체크를 사용할 수 있습니다. – J3soon
@ J3 순 추천. 업데이트 됨. –