DragDropEffect.Copy将自身重置为None
本文关键字:None Copy DragDropEffect | 更新日期: 2023-09-27 18:29:13
我在Scatterview
中有一个ScatterViewItem
,它的操作不由我处理。我在ScatterView中也有一个属性为AllowDrop = True
的RichTextBox
。
默认情况下,只要将ScatterViewItem拖动到RichTextBox的DragEnter
事件中,就会触发该事件,这是正确的。我在这里检查了DragDropEffect,它是DragDropEffect.Move
。Drop
事件在那之后适当地激发。
我在DragEnter中将DragDropEffect从Move
更改为Copy
,但Drop事件不再触发。我在DragOver
中再次检查了DragDropEffect,它不知怎么变成了None
。我试着在DragOver中将其设置为Copy
(再次),但每次它都会在DragOver的下一个触发器上自动变为None
。
只有当DragDropEffect设置为All
或Move
时,才会触发Drop事件。如何将其更改为DragDropEffect.Copy
并仍然激发Drop事件?在设置为DragDropEffect.Copy.后,我确实设置了e.Handled = true
编辑:抱歉,我确实操纵了svi的拖放。在ScatterView的OnManipulationStarted
中,我得到了svi,并调用了svi.BeginDragDrop(svi.DataContext)
。这就是我对svi所做的一切。
(DragEventArgs).AllowedEffects
属性值是多少?只能将(DragEventArgs).Effects
属性设置为(DragEventArgs).AllowedEffects
属性指定的值之一。如果DragDropEffects.Copy
不是(DragEventArgs).AllowedEffects
属性枚举中的选项,则将无法使用该函数。
您可以在创建数据对象并调用DoDragDrop
:时设置该选项
DragDrop.DoDragDrop(item, dragData, DragDropEffects.All);
更新>>>
正如我所说,通常情况下,当您调用DoDragDrop
时,您会设置允许的DragDropEffects
枚举。。。在看到您调用了SurfaceDragCursor.BeginDragDrop
方法之后,我在线查看了MSDN上的SurfaceDragDrop.BeginDragDrop方法页面,发现了以下内容:
public static SurfaceDragCursor BeginDragDrop (
FrameworkElement dragSource,
FrameworkElement draggedElement,
FrameworkElement cursorVisual,
Object data,
IEnumerable<InputDevice> inputDevices,
DragDropEffects allowedEffects
)
我猜这里的最后一个参数是设置DragDropEffects
允许效果枚举的位置。