Est-ce que quelqu'un a un bon moyen de trouver toutes les commandes dans un objet qui est du même type? Voici mon scénario, j'ai un contrôle de tabulation et dans chaque contrôle de tabulation existe un contrôle d'utilisateur (TOUS qui correspondent au même type de base par exemple MyBaseClassControl). Je veux être en mesure de trouver ce contrôle utilisateur SANS avoir à utiliser la méthode control.FindName ("controlName"), plutôt je voudrais obtenir un contrôle sur le contrôle par type (par exemple, la classe de base). La classe VisualTreeHelper semble ne rien faire pour moi car elle ne renvoie que des objets Silverlight natifs.Trouver des commandes du même type
0
A
Répondre
0
Compte tenu de ceci:
public static IEnumerable<DependencyObject> AllChildren(this DependencyObject root)
{
var children = root.DirectChildren().ToList();
return children.Union(children.SelectMany(o => o.AllChildren()));
}
public static IEnumerable<DependencyObject> DirectChildren(this DependencyObject parent)
{
var childCount = VisualTreeHelper.GetChildrenCount(parent);
for (var i = 0; i < childCount; i++)
yield return System.Windows.Media.VisualTreeHelper.GetChild(parent, i);
}
Vous pouvez le faire:
myObj.AllChildren().OfType<MyBaseClassControl>();
Questions connexes
- 1. jQuery: trouver des frères et sœurs du même type d'élément
- 2. Utilisez des "références" pour plusieurs éléments du même type
- 3. App Engine classe avec des enfants du même type
- 4. Référencement des appareils du même type dans Rails
- 5. Solr DatImportHandler, plusieurs résultats du même type?
- 6. Correspondances multiples du même type dans preg_match
- 7. Vérifier si l'objet est du même type
- 8. Comment puis-je trouver des commandes en double par client?
- 9. Consignation des commandes du terminal dans * nix
- 10. Commandes utilisateur multiples référençant le même objet
- 11. Exécuter automatiquement des commandes lors du lancement du shell python
- 12. Liaison de deux objets du même type dans une action
- 13. Trouver le type de fichier
- 14. Retour du même type que la fonction a été transmise
- 15. C# params mot-clé avec deux paramètres du même type
- 16. MySQL requête pour trouver des clients qui ont fait la plupart des commandes
- 17. Comment créer des commandes attrayantes?
- 18. Comment avoir 2 collections du même type dans JPA?
- 19. C#, Windows Services: ServiceBase.Run avec plusieurs services du même type
- 20. C#: Problème lors de l'exécution des commandes du shell
- 21. Chargement des commandes à partir du fichier xml
- 22. Chargement dynamique des commandes utilisateur
- 23. Historique des commandes avec l'utilisateur
- 24. trouver. -type f dans ruby
- 25. Exécution des commandes SQL Sybase à partir du fichier de commandes DOS/Windows
- 26. Est-ce que javac devrait trouver des méthodes en dehors d'une classe anonyme du même nom?
- 27. fin de ligne avec des commandes personnalisées
- 28. fullCalendar trouver des événements supplémentaires dans la même journée?
- 29. Impossible de trouver des contrôles dans FormView.InsertItemTemplate même événement DataBound
- 30. Shell - Comment trouver le répertoire de certaines commandes?
cette méthode d'extension Bizarrement jamais retourner mon type de base sur mesure. Les méthodes "GetChildren" dans le VisualTreeHelper sont-elles récursives? J'ai oublié de mentionner que le contrôle que je cherche est contenu dans une grille. – user378212
Devrait fonctionner bien que sérieusement inefficace. 'Union' doit suivre les objets ne sont pas inclus plus d'une fois dans la sortie qui dans ce cas est inutile, les enfants sont placés sont placés dans un' List '(également inutile) et tout cela est fait récursivement qui, sur un profondément imbriqué arbre d'objet augmente le coût de tout cela massivement. –
AnthonyWJones
D'accord, si la performance devient le problème, cela peut et devrait être optimisé. Aux fins de la question - par ex. comment trouver un contrôle par type - cela le démontre bien. –