现在我找到了函数(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的示例中),但这取决于你绑定到ListView的ObservableCollection。现在,我想根据鼠标在控件上的位置将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在拖动项目时滚动吗?
谢谢!