WPF:如何在重新排列ListBox元素中的项目顺序时确定项目的位置?
-
27-10-2019 - |
题
我遵循了项目重新排列问题的解决方案由dnr3提供。就像魅力一样,很容易理解。现在,我想更进一步:
让我们说ListBox
包含项A,B,C,D和E。在上述解决方案中,如果将ListBoxItem
移到列表的下方,它将位于执行拖放操作的项的下方。因此,如果我选择项目B并将其释放到元素D上方,它将取代D的位置,D向下移动一个位置。如果要拖动的项目更靠近目标对象的上边界或下边界,我希望能够有所作为-如果它靠近目标对象的上边界,则将其放置在目标项目之上,或者如果除此以外。我需要两件事来实现这一目标:
-
我需要目标项目的垂直中心点,以便能够与鼠标位置进行比较。那应该很容易做到:
targetItem.Height / 2;
-
我需要相对于目标项目的鼠标位置。 我怎么得到的?
最后,我想比较这两个值,如果鼠标位置小于或等于项目的垂直中心点,则将拖动的项目放到目标项目之前,否则放到下面。
谢谢!
解决方案
知道了!以下行检索相对于目标项目的鼠标位置
遗传标记代码
以下是放置事件处理程序的外观: 通用标签
不隶属于 StackOverflow