WPF:如何在重新排列ListBox元素中的项目顺序时确定项目的位置?

StackOverflow https://stackoverflow.com/questions/5352379

  •  27-10-2019
  •  | 
  •  

我遵循了项目重新排列问题的解决方案由dnr3提供。就像魅力一样,很容易理解。现在,我想更进一步:

让我们说ListBox包含项A,B,C,D和E。在上述解决方案中,如果将ListBoxItem移到列表的下方,它将位于执行拖放操作的项的下方。因此,如果我选择项目B并将其释放到元素D上方,它将取代D的位置,D向下移动一个位置。如果要拖动的项目更靠近目标对象的上边界或下边界,我希望能够有所作为-如果它靠近目标对象的上边界,则将其放置在目标项目之上,或者如果除此以外。我需要两件事来实现这一目标:

  1. 我需要目标项目的垂直中心点,以便能够与鼠标位置进行比较。那应该很容易做到:

    targetItem.Height / 2;

  2. 我需要相对于目标项目的鼠标位置。 我怎么得到的?

    最后,我想比较这两个值,如果鼠标位置小于或等于项目的垂直中心点,则将拖动的项目放到目标项目之前,否则放到下面。

    谢谢!

有帮助吗?

解决方案

知道了!以下行检索相对于目标项目的鼠标位置
遗传标记代码

以下是放置事件处理程序的外观: 通用标签

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top