WPF TreeView将项目拖动到内部
在现有WPF TreeView控件中实现项目拖放的最佳策略是什么?它应该是MVVM,并且应该具有从一个位置拖到另一个位置的项目预览 他已经考虑了一些解决办法。如果我使用Canvas,我几乎可以实现任何东西,但是我需要从头开始控制,考虑到我需要现有的TreeView功能,这看起来像是重新发明轮子。我尝试了弹出和拇指,但我不知道如何正确地使用它们来实现这个功能。另外,我可以使用PreviewMouseOver处理目标树视图项上方的对象,这也是有意义的;我应该能够根据特定规则取消放置操作,例如,我不能将汽车对象放置到动物类别WPF TreeView将项目拖动到内部,wpf,drag-and-drop,treeview,Wpf,Drag And Drop,Treeview,在现有WPF TreeView控件中实现项目拖放的最佳策略是什么?它应该是MVVM,并且应该具有从一个位置拖到另一个位置的项目预览 他已经考虑了一些解决办法。如果我使用Canvas,我几乎可以实现任何东西,但是我需要从头开始控制,考虑到我需要现有的TreeView功能,这看起来像是重新发明轮子。我尝试了弹出和拇指,但我不知道如何正确地使用它们来实现这个功能。另外,我可以使用PreviewMouseOver处理目标树视图项上方的对象,这也是有意义的;我应该能够根据特定规则取消放置操作,例如,我不能
已经检查了一些商业解决方案,它们确实已经内置了类似的功能;但我想知道是否也有免费或开源的解决方案?或者至少是为了了解他们是如何在商业图书馆中实现这一功能的?我在WPF中实现了很多拖放功能,我会提前告诉您,要做好这项工作需要做一些实际工作,但这绝对是值得的 如果您想自己实现它,我建议您在这里学习msdn文档:。您需要实现本节中列出的事件 要解决问题的具体要点,请执行以下操作:
- 在
事件中实施特定投放目标可以接受的投放的“规则”。在该事件期间,设置为DragOver
表示不允许删除,或设置为其他值之一表示如何解释删除None
- 拖动项目的预览最好使用。您可以在拖动操作期间创建跟随鼠标的装饰器,甚至可以使用
VisualBrush
只需知道,当拖放操作正在进行时,像
这样的普通鼠标事件不起作用,因此您必须坚持使用MouseMove
(它仅由DragOver
设置为AllowDrop
的元素引发),或者使用一些p/invoke魔术。你可以查看我关于这个主题的问题以及我最终得出的答案:True