ListBoxの背景にDrap&Dropする際にDrop先Indexを計算するには?
ListBox
上のListBoxItem
、またはListBox
上のListBox.Background
が見えている領域に対してDrag&Dropを行い、要素の並べ替え/挿入を行おうとしています。
この時、ListBox
の背景要素にDropした際、Dropした位置によって適切な挿入先のIndexを計算する方法が分からず、詰まってしまっています。
- 出来たこと
ListBox
上のListBoxItem
に対するDropは、DragEventArgs.OriginalSource
を使って現在Dropしようとしている先のFrameworkElement
を特定→ListBox.ItemsSource
からDataContext
の内容で探す……などの方法でDrop先Indexを計算する事ができました。
- 出来なくて困っていること(知りたいこと)
ListBox
上のDrop位置において、以下の図のような領域⇔Index値となる計算をしたいのですが、以下の3点を計算・区別する方法が分かりませんでした。
ListBoxItem
間のMarginの位置へのDrop時のIndex計算WrapPanel
での折り返し位置(図上のIndex 4の位置)へのDrop時のIndex計算- 1,2に含まれない末尾全般領域(図上のIndex 6の位置)へのDrop時のIndex計算
実現方法が分かる方、よろしくお願いします。