dnr3が提供するアイテムの再配置問題の解決策に従いました。魔法のように機能し、非常に理解しやすいです。ここで、さらに一歩進んでみたいと思います。
ListBox
にアイテム A、B、C、D、および Eが含まれているとします。上記のソリューションでは、aListBoxItem
がリストの下に移動すると、ドロップが実行されたアイテムの下に配置されます。したがって、項目 B を選択して要素 D の上で放すと、D の場所に移動し、D は 1 つ下に移動します。ドラッグされたアイテムがターゲット アイテムの上限または下限の境界に近い場合、違いを生むことができるようにしたいと考えています。それを実現するには、次の 2 つのことが必要です。
マウスの位置と比較できるようにするには、ターゲット アイテムの垂直方向の中心点が必要です。それは簡単にできるはずです:
targetItem.Height / 2;
ターゲット項目に対するマウスの位置が必要です。どうすればそれを取得できますか?
最後に、これらの 2 つの値を比較したいと思います。マウスの位置がアイテムの垂直方向の中心点以下の場合、ドラッグされたアイテムはターゲット アイテムの前にドロップされ、それ以外の場合は下にドロップされます。
ありがとう!