2010-07-20 5 views

Répondre

3

Le MouseButtonEventArgs a une propriété OriginalSource qui indique la UIElement réelle qui a généré l'événement.

Afin de découvrir quel noeud cet élément vous appartient, vous devrez traverser l'arbre visuel pour le découvrir. J'utilise cette méthode d'extension pour aider à ce que: -

public static IEnumerable<DependencyObject> Ancestors(this DependencyObject root) 
    { 
     DependencyObject current = VisualTreeHelper.GetParent(root); 
     while (current != null) 
     { 
      yield return current; 
      current = VisualTreeHelper.GetParent(current); 
     } 
    } 

Ensuite, en cas MouseRightButtonUp vous pouvez utiliser ce code pour trouver l'article: -

TreeViewItem node = ((DependencyObject)e.OriginalSource) 
         .Ancestors() 
         .OfType<TreeViewItem>() 
         .FirstOrDefault(); 
+0

Peut-être que je manque quelque chose, mais où est le nom "Ancêtres" dans votre deuxième morceau de code? – Telaclavo

+0

@Telaclavo: Bien repéré, il manquait dans l'exemple d'utilisation où il aurait dû être. Édité. – AnthonyWJones

Questions connexes