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();
Может быть, я что-то не хватает, но где имя «Предки» в вашей второй части кода? – Telaclavo
@Telaclavo: Хорошо, заметили, что в примере использования не было, где должно быть. Ред. – AnthonyWJones