ScatterViewItem
中有一个Scatterview
,我的操作不是由我处理的。我在ScatterView中也有一个RichTextBox
,其属性为AllowDrop = True
。
默认情况下,只要将ScatterViewItem拖入其中,RichTextBox的DragEnter
事件就会触发,这是正确的。我在这里检查了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 :(得分:0)
(DragEventArgs).AllowedEffects
属性值是多少?您只能将(DragEventArgs).Effects
属性设置为(DragEventArgs).AllowedEffects
属性指定的值之一。如果DragDropEffects.Copy
不是(DragEventArgs).AllowedEffects
属性枚举中的选项,那么不就可以使用该功能。
您可以在创建数据对象时设置该选项并调用DoDragDrop
:
DragDrop.DoDragDrop(item, dragData, DragDropEffects.All);
更新>>>
正如我所说,通常情况下,当您调用DragDropEffects
时设置允许的DoDragDrop
枚举...在看到您调用了SurfaceDragCursor.BeginDragDrop
方法后,我在网上看了{ MSDN上的{3}}页面,发现了这个:
public static SurfaceDragCursor BeginDragDrop (
FrameworkElement dragSource,
FrameworkElement draggedElement,
FrameworkElement cursorVisual,
Object data,
IEnumerable<InputDevice> inputDevices,
DragDropEffects allowedEffects
)
我猜测这里的最后一个参数是你设置DragDropEffects
允许效果枚举的位置。