首页 > 解决方案 > Gong Drag&Drop:订阅drop事件

问题描述

我担心,这很明显我忽略了,但我有点卡住了:

我正在使用 Gong Solution Drag&Drop 库从一个视图拖放到另一个视图。我编写了一个自定义放置处理程序,它处理我的数据传输以及更新源和目标上的数据(ListView在本例中)。

现在我希望与源视图对应的 ViewModel 类订阅目标视图中的放置事件。但是,我找不到 gong 库暴露的 drop 事件。我的下一个想法是在我的自定义拖放处理程序中编写我自己的事件,但是这些类与源 ViewModel 完全分离,那么我将如何订阅该事件?

一些代码(相关部分):

目标网格:

<Grid dd:DragDrop.IsDropTarget="True" dd:DragDrop.DropHandler="{StaticResource CustomDropHandler}">
<!-- Stuff in my view -->
</Grid>

自定义拖动处理程序(实际上并没有做任何事情,但是当我放置一个项目时,会在基类上触发一个放置的方法)

public class CustomDragHandler : DefaultDragHandler
{
    public override void Dropped(IDropInfo dropInfo)
    {
        base.Dropped(dropInfo);
    }
}

自定义 Drop Handler(这是我处理所有数据传输的地方):

public class CustomDropHandler : IDropTarget
{
    public void DragOver(IDropInfo dropInfo)
    {
        dropInfo.Effects = DragDropEffects.Move;
        dropInfo.DropTargetAdorner = DropTargetAdorners.Highlight;
    }

    public void Drop(IDropInfo dropInfo)
    {
        // Whole lot of logic in here, fired on drop. 
    }
}

标签: wpfdrag-and-drop

解决方案


推荐阅读