我正在开发一个 Wpf 项目,但现在我遇到了一个ListView
问题。
事实证明,我已经Drag&Drop
在 ListView 上实现了一个运行良好的功能。当我尝试向下或向上滚动时,问题就来了。通过这样做,Drag&Drop
功能被激活,阻止我继续滚动。
我发现这个解决方案表明我们需要将控件附加到ScrollChanged
事件。
<ListView ScrollViewer.ScrollChanged="listView1_ScrollChanged"...
但我真的不知道在那个处理程序中该做什么。我怎么能从那个事件中禁用拖放?我怎样才能再次启用它?或者,有没有更好的方法来解决这个问题?
那是我的Drag&Drop
代码:
private void listView1_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
// Store the mouse position
startPoint = e.GetPosition(null);
}
private void listView1_MouseMove(object sender, MouseEventArgs e)
{
// Get the current mouse position
Point mousePos = e.GetPosition(null);
Vector diff = startPoint - mousePos;
if (e.LeftButton == MouseButtonState.Pressed &&
(Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance ||
Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance))
{
// Get the dragged ListViewItem
ListView listView = sender as ListView;
// Get items to drag
var a = listView.SelectedItems;
// Initialize the drag & drop operation
DataObject dragData = new DataObject("myFormat", a);
DragDrop.DoDragDrop(listView, dragData, DragDropEffects.Move);
}
}
提前致谢。