我在WPF中的ListView中放置了一些東西。我需要知道我正在放棄的(X,Y)位置的項目。我怎樣才能做到這一點?如何從(X,Y)位置獲取ListView項目?
WPF ListView沒有GetItemAt。我回到我原來的問題。
我在WPF中的ListView中放置了一些東西。我需要知道我正在放棄的(X,Y)位置的項目。我怎樣才能做到這一點?如何從(X,Y)位置獲取ListView項目?
WPF ListView沒有GetItemAt。我回到我原來的問題。
完成!由於這篇文章 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;
}
您想使用GetItemAt函數。您可能還需要在GetItemAt之前調用PointToClient函數,因爲您需要使用client coordinates。
籃球,對不起。這應該工作得很好:
FrameworkElement element = (FrameworkElement)e.OriginalSource;
ListViewItem lvi = (ListViewItem)listView1.ItemContainerGenerator.ContainerFromItem(element.DataContext);
WPF ListView沒有GetItemAt。我回到我原來的問題。 – Mariano 2008-12-12 13:41:10