2010-10-05 4 views
0

Je construction:Comment rechercher des parents?

Grid a = ((((usercontrol.Parent as DockPanel).Parent as ScrollViewer).Parent as Grid) 

Est-il possible de trouver un arbre ou un élément parent?

exemple: Grille a = GetFirstParent (usercontrol, "Grid") Grille - est un élément de type

+0

Juste une note sur votre conception là-bas. l'opérateur "as" renverra null s'il est incapable de convertir. Rendre cette fonction particulière extrêmement dépendante de la structure visuelle de votre contrôle utilisateur. Si vous le modifiez, cela produira probablement des exceptions nulles – Val

Répondre

1
Grid a = userControl.FindParent<Grid>(); 

public static T FindParent<T>(this DependencyObject startElement) 
     where T : DependencyObject 
    { 
     DependencyObject parent = GetParentObject(startElement); 
     if (parent == null) 
      return null; 

     T typedParent = parent as T; 
     if (typedParent != null) 
     { 
      return typedParent; 
     } 

     return FindParent<T>(parent); 
    } 
0

Utilisez la classe VisualTreeHelper.

Il a une méthode, GetParent, qui retourne le parent d'un contrôle (un DependencyObject vraiment).

Questions connexes