0

我有一个ScatterViewItemin Scatterview,它的操作不是由我处理的。RichTextBox我在 ScatterView 中也有一个带有属性的AllowDrop = True.

默认情况下,DragEnter只要将 ScatterViewItem 拖入其中,就会触发 RichTextBox 的事件,这是正确的。我在这里检查了 DragDropEffect,它是DragDropEffect.Move. 之后事件Drop会适当地触发。

我在 DragEnter 中将 DragDropEffect 从更改为MoveCopy但 Drop 事件不再触发。我再次检查了 DragDropEffect DragOver,它以某种方式变成了None. 我尝试在 DragOver 中将其设置为Copy(再次),但每次它都会None在 DragOver 的下一个触发器中自行生成。

只有 DragDropEffect 设置为Allor时才会触发 Drop 事件Move。如何将其更改为DragDropEffect.Copy并仍然触发 Drop 事件?我e.Handled = true在设置为 DragDropEffect.Copy 后进行了设置。

编辑:我很抱歉,我确实操纵了 svi 的拖放操作。在 ScatterView 中OnManipulationStarted,我得到了 svi 并调用了svi.BeginDragDrop(svi.DataContext). 这就是我对 svi 所做的一切。

4

1 回答 1

0

什么是(DragEventArgs).AllowedEffects财产价值?您只能将该属性设置为该(DragEventArgs).Effects属性指定的值之一(DragEventArgs).AllowedEffects。如果DragDropEffects.Copy不是在(DragEventArgs).AllowedEffects属性枚举中找到的选项,那么您将无法使用该功能。

您可以在创建数据对象并调用时设置该选项DoDragDrop

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

更新>>>

正如我所说,通常,您在调用时设置了允许的DragDropEffects枚举DoDragDrop......在看到您调用了该SurfaceDragCursor.BeginDragDrop方法后,我在线查看了MSDN的SurfaceDragDrop.BeginDragDrop方法页面,发现:

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

我猜这里的最后一个参数是你设置DragDropEffects允许的效果枚举的地方。

于 2013-08-28T11:56:29.860 回答