2011-02-01 8 views

Répondre

0

Vous pouvez utiliser this code et le modifier pour faire correspondre le type au lieu du nom.

+0

La réponse de baalazamon est mieux. –

1

Quelque chose comme ceci:

public static IEnumerable<T> FindDescendants<T>(DependencyObject obj, Predicate<T> condition) where T : DependencyObject 
{ 
    List<T> result = new List<T>(); 

    for (var i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++) 
    { 
     var child = VisualTreeHelper.GetChild(obj, i); 

     var candidate = child as T; 
     if (candidate != null) 
     { 
      if (condition(candidate)) 
      { 
       result.Add(candidate); 
      } 
     } 

     foreach (var desc in FindDescendants(child, condition)) 
     { 
      result.Add(desc); 
     } 
    } 

    return result; 
} 

Et en cas de trouver toutes les zones de texte dans un élément de l'onglet appel de méthode ressemblera à ceci:

var allTextBoxes = FindDescendants<TextBox>(myTabItem, e => true); 
Questions connexes