2013-01-15 3 views
3

위대한 드래그/드롭 프레임 워크를 사용하고 있습니다. http://code.google.com/p/gong-wpf-dragdrop/ 두 개의 목록 상자 - A와 B가 있습니다. B에서 A로 끌면 마우스 커서가 커서가 목록 상자 A의 영역 내에 있습니다.WPF에서 드래그 할 때 커서 변경

나는 거의 그것을 가지고 있습니다. 다음과 같이 IDropTarget 인터페이스를 사용하여 : 나는 조작 할 수 없습니다 일 (그것을 통해 라인과 검은 색 원) 보여줍니다 커서를 통해 끌어 야하는 동안

void IDropTarget.DragOver(DragOver drag) 
{ 
drag.Effects = DragDropEffects.Copy | DragDropEffects.Move; 

// some logic to determine if hovering over listbox A 
// ... 

if (hoveringOverListA) 
{ 
    ListBoxA.Cursor = ((FrameworkElement) Application.Current.Resources["ListboxACursor"]).Cursor; 
} 
} 

유일한 문제이다. 마우스를 놓으면 ListboxACursor가 나타납니다. 그래서 지연 반응 인 것 같아요. DragOver'ing하는 동안 Drop 대신에 Drop하는 것을 기다리는 것과 같습니다.

누구든지 코드의 문제점을 볼 수 있으면 크게 감사하겠습니다. 나는 그것이 DragDropEffects와 관련이 있을지도 모른다고 느끼지만, 그것은 주로 직감입니다.

감사

Windows가 기본 모양 & 느낌을 보장하기 위해 자신의 커서를 사용하려고하기 때문입니다
+0

드롭하려고하는 컨트롤에 AllowDrop 플래그를 설정 했습니까? –

+0

나는 실제로 드롭을 허용하고 싶지 않습니다. 내가 보여주고 싶은 커스텀 커서는 아이템이 다른 곳으로 드래그 될 필요가 있다는 것을 (디폴트 커서보다) 더 분명하게 보이게되어 있습니다. – theqs1000

답변

0

. 명시 적으로 기본 커서를 사용 불가능으로 설정하여이를 피할 수 있습니다. 이 최고 구글 결과이기 때문에이 질문에 대답이 tutorial

private void DragSource_GiveFeedback(object sender, GiveFeedbackEventArgs e) 
{ 
    e.UseDefaultCursors = e.Effect != DragDropEffects.Copy; 
} 
+0

안녕하세요,이 시도했지만 문제가 지속됩니다. 강제로 커서를 무시하는 다른 방법이 있습니까? – theqs1000

+0

흠, 다른 생각이 없습니다. 죄송합니다. – Matthias

5

에 GiveFeedback 이벤트를 참조하십시오.

protected override void OnGiveFeedback(System.Windows.GiveFeedbackEventArgs e) 
{ 
    Mouse.SetCursor(Cursors.Hand); 
    e.Handled = true; 
} 

이 방법은 끌기 소스에 정의해야합니다. 이벤트를 처리 된 것으로 플래그 지정하고 base.OnGiveFeedback으로 전화하지 않는 것이 중요합니다. 둘 중 하나를 수행하면 변경 사항을 무시하는 기본 드래그 커서가 발생하게되므로 중요합니다.

대신에 Mouse.SetCursor도 사용하고 있습니다. 후자는 드래그 소스 요소의 영구 속성이며, 실제로 변경하려고하지 않을 것입니다.

+0

아주 좋은 답변입니다! – IneedHelp

관련 문제