我有一个ListView
,通过拖放成功实现了列表中项目的重新排列。如果用户将项目向上移动,它将插入到ListViewItem
上方,如果用户向下移动,项目将插入插入到ListViewItem
下方,{p}
但是,我想为用户提供视觉反馈,以了解是否将商品插入到ListViewItem
下方或上方,他将继续放置该商品。我要实现的是,根据其拖放行为,被拖动到的listviewitem将在其下方或上方显示额外的空白。我似乎无法做到这一点。
使用边距,我可以在鼠标下更改listviewitem的位置,但是用户随后将直观地将拖动的项目移动到此空白区域,从而离开listviewitem。我试图通过增加listviewitem的padding,height,vertical(content)alignment使它起作用,请命名。但是什么都行不通!
怎么办?
代码:
Private Sub ListViewItem_DragEnter(sender As Object, e As DragEventArgs)
If e.Data.GetDataPresent(moveWorkflowStep) = False Then Return
Dim currentListviewItem As ListViewItem = sender
_currentListviewItemMargin = currentListviewItem.Margin
Dim sourceListviewItem As ListViewItem = e.Data.GetData(moveWorkflowStep)
Dim sourceRank = CType(sourceListviewItem.DataContext, ObservableWorkflowStep).Rank
Dim currentRank = CType(currentListviewItem.DataContext, ObservableWorkflowStep).Rank
If currentRank > sourceRank Then
currentListviewItem.VerticalAlignment = VerticalAlignment.Top
'currentListviewItem.Margin = New Thickness(_currentListviewItemMargin.Left,
' _currentListviewItemMargin.Top,
' _currentListviewItemMargin.Right,
' 20)
ElseIf currentRank < sourceRank Then
currentListviewItem.VerticalAlignment = VerticalAlignment.Bottom
'currentListviewItem.Margin = New Thickness(_currentListviewItemMargin.Left,
' 20,
' _currentListviewItemMargin.Right,
' _currentListviewItemMargin.Bottom)
End If
End Sub