He estado trabajando con la solución de Bea here por un tiempo y me resulta muy útil. El problema ahora es que cuando arrastro y solto elementos dentro de o hacia otro control ListView y deseo desplazarme hacia arriba/abajo "durante" el arrastre (moviendo un elemento del índice 30 al índice 1), no está sucediendo. Tendría que arrastrar hasta la parte superior de los elementos visuales en ListView, desplazarme manualmente hacia arriba, luego arrastrar de nuevo, y finalmente terminar en la posición que quiero. Esto no es muy amigable para el usuario.WPF ListView Databound Drag/Drop Auto Scroll
Ahora encontré la función (DragDropHelper.DropTarget_PreviewDragOver) que me gustaría hacer la prueba de qué elemento se está arrastrando, y lo estoy obteniendo.
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)
Ahora desde allí se puede obtener la propiedad de dependencia de este golpe visual
Dim lvi As ListViewItem = TryCast(GetDependencyObjectFromVisualTree(TryCast(result.VisualHit, DependencyObject), GetType(ListViewItem)), ListViewItem)
que es de un ListViewItem. Ahora en la función DropTarget_PreviewDragOver tengo el "DraggedItem" que es de tipo Picture en el ejemplo de Bea, pero eso puede cambiar dependiendo de la ObservableCollection que haya enlazado al ListView. Ahora, quiero arrastrar el ListView hacia arriba o hacia abajo dependiendo de dónde esté el mouse en el control. He tratado con el siguiente sin finalizar código que no funciona
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
Alguien me puede apuntar en la dirección correcta para conseguir este ItemsControl o ListView para desplazarse al arrastrar sobre los artículos ??
Gracias!
Hola, ¿Encontró una solución? Cheers –
Lo siento, todavía no he tenido tiempo de investigar esto más. ¿Has encontrado algo desde que publicaste? – ScottN