当我开始像这样拖动时,我正在实施WPF DragAndDrop 移动:
DragDrop.DoDragDrop(sender, objToDrag, DragDropEffects.Move);
然后我想添加副本(例如,在拖动时按下Ctrl键)。如果我按上面的代码按下它,没有任何变化。要启用复制行为,我修改了代码,如下所示:
DragDrop.DoDragDrop(sender, objToDrag, DragDropEffects.Move | DragDropEffects.Copy);
现在当我按住Ctrl键的同时拖动鼠标光标变为系统定义的复制光标(带有“+”符号的箭头)。
然后问题:如何区分副本和操作接收端的移动,处理丢弃?
DragEventArgs.Effects
处理程序中的Drop
字段始终等于DragDropEffects.Move | DragDropEffects.Copy
,无论是否按下Ctrl按钮。奇怪的是,AllowedEffects
预计会包含这个组合,我希望效果能够在下降时保持有效组合 - 但事实并非如此。
这是否意味着我应该自己跟踪Ctrl状态?我希望操作系统/框架应该隐藏这些细节。