0

我使用 LibraryBar 来显示一些有关系的项目。由于项目之间存在不同的关系,因此我有多个容器。作为默认设置,如果将 LibraryBar 的 AllowDrop 设置为 true,则可以将所有元素拖到 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
            }
        }

如您所见,如果光标的数据是图像(因此我现在是 TagVisualization),我只允许丢弃。这行得通,不再可能将项目从另一个 LibraryBar 拖放到此 LibraryBar 中。但是,如果将项目拖动到 LibraryBar 上,播放的动画仍然会播放。我怎样才能为特定类型禁用此动画?

4

1 回答 1

1

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

于 2010-11-15T22:40:46.173 回答