如何在ListView中的光标下获取项目?如何让光标在WPF ListView下的项目
例如,当我移动鼠标光标,我希望得到它下面的一个项目(光标),并将其名称到状态栏。
其实我需要WinForms.NET
感谢像话getItemAt(INT X,int y)对方法!
UPD:答案被发现。手表扩展方法如下
如何在ListView中的光标下获取项目?如何让光标在WPF ListView下的项目
例如,当我移动鼠标光标,我希望得到它下面的一个项目(光标),并将其名称到状态栏。
其实我需要WinForms.NET
感谢像话getItemAt(INT X,int y)对方法!
UPD:答案被发现。手表扩展方法如下
您可以尝试使用VisualTreeHelper.HitTest方法。事情是这样的:
System.Windows.Point pt = e.GetPosition(this);
System.Windows.Media.VisualTreeHelper.HitTest(this, pt);
public static object GetObjectAtPoint<ItemContainer>(this ItemsControl control, Point p)
where ItemContainer : DependencyObject
{
// ItemContainer - can be ListViewItem, or TreeViewItem and so on(depends on control)
ItemContainer obj = GetContainerAtPoint<ItemContainer>(control, p);
if (obj == null)
return null;
return control.ItemContainerGenerator.ItemFromContainer(obj);
}
public static ItemContainer GetContainerAtPoint<ItemContainer>(this ItemsControl control, Point p)
where ItemContainer : DependencyObject
{
HitTestResult result = VisualTreeHelper.HitTest(control, p);
DependencyObject obj = result.VisualHit;
while (VisualTreeHelper.GetParent(obj) != null && !(obj is ItemContainer))
{
obj = VisualTreeHelper.GetParent(obj);
}
// Will return null if not found
return obj as ItemContainer;
}
谢谢!使用你的代码我做了一个小扩展方法。我希望有人会发现它有用 – Grigory 2010-09-28 15:52:56