版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Vblegend_2013/article/details/80839114
Wpf下的 TreeView 判断鼠标所在节点对象,当然适合所有 ListBox ViewList DataGridView 等容器控件
public void Item_MouseDown(object sender, MouseButtonEventArgs e)
{
TreeView Tree = sender as TreeView;
Point point = e.GetPosition(Tree);
var element = Tree.GetElementFromPoint<TreeViewItem>(point);
if (element != null)
{
Console.WriteLine(element);
}
Console.WriteLine(e.ClickCount);
}
public static T GetElementFromPoint<T>(this ItemsControl itemsControl, Point point) where T : class
{
UIElement element = itemsControl.InputHitTest(point) as UIElement;
while (element != null)
{
if (element == itemsControl)
return default(T);
object item = itemsControl.ItemContainerGenerator.ItemFromContainer(element);
if (!item.Equals(DependencyProperty.UnsetValue))
return item as T;
if (element is T)
{
return element as T;
}
element = (UIElement)VisualTreeHelper.GetParent(element);
}
return default(T);
}