2008-12-12 68 views

回答

5

完成!由於這篇文章 http://www.codeproject.com/KB/WPF/WPF_Drag_And_Drop_Sample.aspx

private int GetCurrentIndex(GetPositionDelegate getPosition) 
{ 
    int index = -1; 
    for (int i = 0; i < clasesListView.Items.Count; ++i) 
    { 
     ListViewItem item = GetListViewItem(i); 
     if (this.IsMouseOverTarget(item, getPosition)) 
     { 
      index = i; 
      break; 
     } 
    } 
    return index; 
} 

private bool IsMouseOverTarget(Visual target, GetPositionDelegate getPosition) 
{ 
    Rect bounds = VisualTreeHelper.GetDescendantBounds(target); 
    Point mousePos = getPosition((IInputElement)target); 
    return bounds.Contains(mousePos); 
} 

delegate Point GetPositionDelegate(IInputElement element); 

ListViewItem GetListViewItem(int index) 
{ 
    if (clasesListView.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated) 
     return null; 

    return clasesListView.ItemContainerGenerator.ContainerFromIndex(index) as ListViewItem; 
} 
4

籃球,對不起。這應該工作得很好:

FrameworkElement element = (FrameworkElement)e.OriginalSource; 

ListViewItem lvi = (ListViewItem)listView1.ItemContainerGenerator.ContainerFromItem(element.DataContext); 
相關問題