2010-07-20 4 views

ответ

3

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(); 
+0

Может быть, я что-то не хватает, но где имя «Предки» в вашей второй части кода? – Telaclavo

+0

@Telaclavo: Хорошо, заметили, что в примере использования не было, где должно быть. Ред. – AnthonyWJones

Смежные вопросы