WPF将自定义控件拖放到不同的控件类型

时间:2015-06-24 11:41:20

标签: c# wpf drag-and-drop adorner

我正在使用WPF实现一个界面来管理竞赛中的群组。每个组都由自定义用户控件表示(让我们称之为 GroupControl

基本上,GroupControl显示组的名称(可编辑的Combobox,列表中包含预定义的名称),组内的玩家列表(Gridview包含玩家姓名,玩家编号等信息),以及其他几个数据(作为文本块)。

现在,界面分为两个区域:

  • 区域1:我显示所有组的位置。
  • 区域2:我应该在这些小组上工作。

因此,我们的想法是能够将一个组从区域1拖放(复制,而不是移动)到区域2;但也可以将一个组从区域1或区域2拖到区域2中的另一个组(以某种方式合并)。

我在本教程后面有第一个实现: https://msdn.microsoft.com/en-us/library/vstudio/ms742859%28v=vs.100%29.aspx#Implementing_Drag_And_Drop

这是一个非常简单的解决方案,并且工作得非常好,直到我意识到以下问题:由于每个GroupControl拦截拖放相关事件,它阻止我与嵌套控件交互。例如,我无法通过单击并拖动滚动条来滚动我的播放器列表,因为MouseMove事件是在GroupControl级别截获的;同样适用于ComboBox,除非我删除MouseMove事件,否则它会以某种方式显示其项目。

所以,我开始挖掘使用更复杂但更有效的概念发现了许多优秀的拖放实现,尤其是 Adorners 行为

我读了以下内容:   - http://www.zagstudio.com/blog/488#.VYqJFEZ4SdE

它似乎工作得很好:我可以将项目从一个区域拖放到另一个区域,我甚至可以将它们插入到特定的位置。 但是,我还没有找到一种方法来使用此解决方案将GroupControl拖放到另一个GroupControl上。

对此事的任何帮助将不胜感激。我想要实现的只是能够与GroupControl中的嵌套控件进行交互。

0 个答案:

没有答案