我按照dnr3提供的项目重新排列问题的解决方案。像魅力一样工作,很容易理解。现在,我想更进一步:
假设ListBox
包含项目 A、B、C、D 和 E。在上述解决方案中,如果 aListBoxItem
在列表中向下移动,则它位于执行 drop 的项目下方。因此,如果我选择项目 B 并将其释放到元素 D 上,它将占据 D 的位置,而 D 将向下移动一个位置。如果拖动的项目更靠近目标项目的上边界或下边界,我希望能够有所作为——如果它更靠近上边界,我希望它放置在目标项目的上方,否则放置在目标项目的下方。我需要两件事来实现这一点:
我需要目标项目的垂直中心点才能将其与鼠标位置进行比较。这应该很容易做到:
targetItem.Height / 2;
我需要相对于目标项目的鼠标位置。我怎么得到它?
最后我想比较这两个值,如果鼠标位置小于或等于项目的垂直中心点,则拖动的项目将被放置在目标项目之前,否则在下方。
谢谢!