如何仅针对特定类型AllowDrop?

时间:2010-11-15 22:13:51

标签: c# wpf pixelsense

我使用LibraryBar来显示一些有关系的项目。由于项目之间存在不同的关系,因此我有多个容器。作为默认设置,如果为LibraryBar将AllowDrop设置为true,则可以将所有元素拖到LibraryBar中,并将这些项添加到它们被删除的集合中。

现在我不想那样。我不希望可以将项目从一个LibraryBar拖到另一个LibraryBar。但是我不能只将AllowDrop设置为false,因为我想将一些TagVisualizations拖到LibraryBar中。

所以我在我的方法中定义了处理DropEvents的方法:

public void OnTargetDrop(object sender, SurfaceDragDropEventArgs e)
        {
            //only if TagVisualization
            if (e.Cursor.Data is Image)
            {
                ((sender as LibraryBar).Tag as ISourceFile).unexpand();
                e.Handled = true;
            }
            else
            {
                //TODO: cancel Drag&Drop
            }
        }

正如你所看到的,如果Cursor的数据是一个Image,我只允许丢弃(因此我现在是TagVisualization)。这样可行,不再可能将项目从另一个LibraryBar拖放到此LibraryBar中。但是,如果项目被拖动到LibraryBar上,则播放的动画仍然会播放。如何为特定类型禁用此动画?

1 个答案:

答案 0 :(得分:1)

为DragCompleted事件添加事件处理程序。对于要排除的任何类型,设置处理等于true。 DragCompletedEventArgs也有Cursor.Data属性。