如何知道WPF中是否已取消拖放

Jon*_*ell 5 wpf drag-and-drop

我正在WPF中编写一个基于ListBox的用户控件.其中一个主要功能是通过拖动项目来重新排序列表.当用户拖动项目时,我将项目更改Opacity为50%,并ObservableCollection根据用户想要的位置在我的ViewModel中物理移动项目.在掉落事件中,我将Opacity回到100%.

我遇到的问题是,如果用户将项目拖离我的控件并将其丢弃到其他地方,那么我需要将其更改Opacity为100%并将项目移回用户开始拖动时的位置.是否有我可以处理的事件来捕获此操作?如果没有,有没有其他狡猾的方法来解决这个问题?

ito*_*son 15

假设您使用的是内置拖放功能,则可以使用DoDragDrop方法的返回值.如果放置目标不接受拖动的对象,则DoDragDrop将返回DragDropEffects.None.

这当然假设表单上的其他控件不允许删除列表项.

  • 我从未意识到DragDrop.DoDragDrop是一个阻塞调用.直到跌落发生后(成功或其他方式)它才会返回.很有用! (6认同)