我使用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上,则播放的动画仍然会播放。如何为特定类型禁用此动画?
答案 0 :(得分:1)
为DragCompleted事件添加事件处理程序。对于要排除的任何类型,设置处理等于true。 DragCompletedEventArgs也有Cursor.Data属性。