2013-08-28 3 views
0

ScatterviewScatterViewItem이 있는데 그 조작은 저에게 처리되지 않습니다. ScatterView에도 RichTextBox이 있으며, 속성은 AllowDrop = True입니다.DragDropEffect.Copy 자체를 None으로 재설정합니다.

기본적으로 RichTextBox의 DragEnter 이벤트는 ScatterViewItem이 끌어다 놓을 때마다 발생하는 이벤트입니다. 여기 DragDropEffect를 확인했는데 DragDropEffect.Move입니다. 그 후에 적절하게 Drop 이벤트가 발생합니다.

DragEnter에서 DragDropEffect를 Move에서 Copy으로 변경했지만 Drop 이벤트가 더 이상 발생하지 않습니다. DragOver에서 DragDropEffect를 다시 확인했는데 어떻게 든 None이되었습니다. 나는 DragOver에서 Copy (다시)으로 설정하려고 시도했지만 매번 DragOver의 다음 트리거에서 None이 될 것입니다.

Drop 이벤트가 발생하는 유일한 시간은 DragDropEffect가 All 또는 Move으로 설정된 경우입니다. DragDropEffect.Copy으로 변경하고 여전히 Drop 이벤트를 발생시키는 방법은 무엇입니까? DragDropEffect.Copy로 설정 한 후 e.Handled = true을 설정했습니다.

편집 : 나는 사과하고, 나는 svi의 드래그 앤 드롭을 약간 조작했다. ScatterView의 OnManipulationStarted에서 svi를 얻었고 svi.BeginDragDrop(svi.DataContext)이라고합니다. 그게 내가 svi에게 한 모든 것입니다.

답변

0

(DragEventArgs).AllowedEffects 속성 값은 무엇입니까? (DragEventArgs).Effects 속성은 (DragEventArgs).AllowedEffects 속성에 지정된 값 중 하나로 설정할 수만 있습니다. DragDropEffects.Copy(DragEventArgs).AllowedEffects 속성 열거 형에있는 옵션이 아니면 이 아니며이 해당 기능을 사용할 수 있습니다.

당신은 당신이 당신의 데이터 객체를 생성 할 때이 옵션을 설정하고 호출 할 수 있습니다 DoDragDrop :

DragDrop.DoDragDrop(item, dragData, DragDropEffects.All); 

내가 말했듯이 당신이 DoDragDrop를 호출 할 때, 일반적으로, 당신은 허용 DragDropEffects 열거를 설정

UPDATE >>> ... SurfaceDragCursor.BeginDragDrop 메서드를 호출 한 것을보고 나서 MSDN의 SurfaceDragDrop.BeginDragDrop Method 페이지를보고 다음을 확인했습니다.

public static SurfaceDragCursor BeginDragDrop (
    FrameworkElement dragSource, 
    FrameworkElement draggedElement, 
    FrameworkElement cursorVisual, 
    Object data, 
    IEnumerable<InputDevice> inputDevices, 
    DragDropEffects allowedEffects 
) 

여기서 마지막 매개 변수는 DragDropEffects 허용되는 효과 열거를 설정하는 곳입니다.

+0

흠'Effects'와'AllowedEffects'를 섞어 봤어? AllowedEffects가 무엇인지 알 수 없으므로 DragEnter에서 DragEventArgs에 해당 속성이 없습니다. 나는'DragDrop.DoDragDrop'을 호출하지 않았고 대신'SurfaceDragCursor'를 생성하는'svi.BeginDragDrop'를 호출했습니다. 나는'DragDrop.DoDragDrop'으로 변경하고'DragEnter'는 지금도 실행하지 않습니다. 실례합니다. 드래그 앤 드롭 서피스 항목에 대한 지식은 여전히 ​​매우 약합니다 ... –

+0

'DragEnter'에서'(SurfaceDragDropEventArgs) .Cursor.AllowedEffects' 및'Move'를 확인했습니다. –

+0

예, 나는 * 그들을 * 섞어서 ... 그 점을 지적 주셔서 감사합니다 ... 나는 지금 내 대답을 업데이 트했습니다. 또한, 'AllowedEffects'가'Move' 만 쓰면 움직일 수 있고 복사 할 수 없습니다. – Sheridan

관련 문제