2014-01-16 66 views
0

因此,我已經爲列表視圖啓用了拖放操作,但我注意到UIelement.IsMouseOver在拖放操作過程中不起作用。WPF如何在拖放操作過程中測試MouseIsOver元素

來源:「這是因爲當我們做拖放操作時,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; 
} 
+0

你試過[Mouse.DirectlyOver](http://msdn.microsoft.com/en-us/library/system.windows.input.mouse.directlyover%28v=vs.110%29.aspx)嗎? – wdosanjos

+0

您是否試圖確定插入丟棄項目的索引? –

回答

3

使用此方法的過程中是在一個元素:​​。您應該在拖放事件參數中設置鼠標位置(我假設存在但未顯示)。我不確定在傳遞到HitTest的點所需的參照系。