Я работаю с решением Bea here и нахожу его очень полезным. Проблема теперь у меня есть, когда я перетаскиваю элементы в пределах или в другой элемент управления ListView, и я хочу прокручивать вверх/вниз «во время» перетаскивания (перемещение элемента из индекса 30 в индекс 1), этого не происходит. Мне нужно было бы перетащить на верхние части визуальных элементов в ListView, вручную прокрутить вверх, а затем снова перетащить, в конечном итоге оканчиваясь на нужную мне позицию. Это не очень удобно.WPF ListView Databound Перетаскивание Auto Scroll
Теперь я нашел функцию (DragDropHelper.DropTarget_PreviewDragOver), что я хотел бы проверить, какой элемент перетаскивается, и я получаю это.
Dim pt As Point = e.GetPosition(DirectCast(Me.targetItemsControl, UIElement))
' Perform the hit test against a given portion of the visual object tree.
Dim result As HitTestResult = VisualTreeHelper.HitTest(Me.targetItemsControl, pt)
Теперь оттуда я могу получить DependencyProperty этого визуального хита
Dim lvi As ListViewItem = TryCast(GetDependencyObjectFromVisualTree(TryCast(result.VisualHit, DependencyObject), GetType(ListViewItem)), ListViewItem)
носящей ListViewItem. Теперь в функции DropTarget_PreviewDragOver у меня есть «DraggedItem», который имеет тип Picture в примере Bea, но это может измениться в зависимости от ObservableCollection, связанного с ListView. Теперь я хочу перетащить ListView вверх или вниз в зависимости от того, где находится мышь на элементе управления. Я попытался с ниже незавершенным нерабочим кода
If lvi IsNot Nothing Then
If pt.Y <= 25 Then
Dim lv As ListView = TryCast(targetItemsControl, ListView)
If lv IsNot Nothing Then
Dim index As Integer = lv.Items.IndexOf(lvi)
If index > 1 Then
lv.ScrollIntoView(lv.Items(index - 1))
End If
End If
Else
If pt.Y >= Me.targetItemsControl.ActualHeight - 25 Then
Debug.Print("Scroll Down")
End If
End If
End If
Может кто-то мне точку в правильном направлении, чтобы получить эту ItemsControl или ListView для прокрутки при перемещении по элементам ??
Спасибо!
Hi, Вы нашли решение? Cheers –
Извините, я до сих пор не успел заглянуть в это. Вы столкнулись с чем-то с тех пор, как вы отправили? – ScottN