WPF如何在拖放操作期间测试MouseIsOver元素

时间:2014-01-16 20:18:47

标签: c# wpf

所以我为列表视图启用了拖放功能,但我注意到UIelement.IsMouseOver在拖放操作期间不起作用。

来源:“这是因为当我们进行拖放操作时,WPF会阻止所有鼠标操作。您可以使用带有动画的EventTrigger来执行此操作。”

Link

但是,我很好奇为什么拖放操作会阻止鼠标操作。如果是这种情况,我应该如何在拖放操作期间测试鼠标是否在元素上

int GetIndexOfListViewItemMouseIsOver(ListView listview)
{
  for (int i = 0; i < listview.Items.Count; ++i)
  {
    ListViewItem item = listview.ItemContainerGenerator.ContainerFromItem(listview.Items[i]) as ListViewItem;
    if (item != null && item.IsMouseOver)
    {
      return i;
    }
  }
  return -1;
}

1 个答案:

答案 0 :(得分:3)

使用此方法:VisualTreeHelper.HitTest。您应该在拖放事件参数中具有鼠标位置(我假设存在但未显示)。我不确定传递到HitTest的点所需的参考框架。

相关问题