MouseButtonEventArgs
имеет свойство OriginalSource
, которое указывает фактическое UIElement
, которое сгенерировало событие.
Чтобы выяснить, какому Узлу принадлежит этот элемент, вам нужно пройти по визуальному дереву, чтобы обнаружить его. Я использую этот метод расширения, чтобы помочь с этим: -
public static IEnumerable<DependencyObject> Ancestors(this DependencyObject root)
{
DependencyObject current = VisualTreeHelper.GetParent(root);
while (current != null)
{
yield return current;
current = VisualTreeHelper.GetParent(current);
}
}
Затем в событии MouseRightButtonUp
вы можете использовать этот код, чтобы найти предмет: -
TreeViewItem node = ((DependencyObject)e.OriginalSource)
.Ancestors()
.OfType<TreeViewItem>()
.FirstOrDefault();