Supposons que j'ai XAML représentant une grille avec des enfants, chaque enfant est un contrôle différent, avec un x: Name. Comment puis-je "obtenir" ces contrôles du code par nom?Silverlight 3.0: Comment obtenir les enfants de la grille par x: Nom?
Répondre
Si le code que vous écrivez se trouve dans le fichier code-behind du fichier xaml, Visual Studio doit automatiquement générer des variables membres contenant des références aux éléments nommés du fichier xaml. Donc, si vous avez un bouton avec x: Name = "myButton", vous pouvez accéder à ce bouton via this.myButton.
Si vous souhaitez référencer un élément nommé de quelque part autre que le fichier code-behind, vous pouvez appeler FindName sur l'élément à l'élément nommé, par exemple:
Button myButton = myGrid.FindName("myButton") as Button;
où myGrid est une référence à la Grille en question.
Chaque contrôle avec un x: Name a un champ créé pour lui dans la classe partielle créée pour le XAML. Ce champ a une accessibilité interne. Donc, à partir du code avec dans le "code-behind" cs (pourquoi je déteste ce terme?), Vous pouvez simplement utiliser le nom du contrôle directement dans le code pour y accéder.
Seriez-vous si gentil et si compliqué que cela? – Maciek
Je pense qu'il veut dire, si vous avez x: Name = "MyNamedControl". Une fois que vous le compilez, le fichier Reference.g l'aura automatiquement disponible, donc vous pouvez simplement taper this.MyNamedControl – Paully
Mais si vous faites des templates, cela n'arrivera pas et vous devriez utiliser FindName – Paully
- 1. Silverlight (3.0) - Data-grid - Ajout de données par l'utilisateur via la grille de données
- 2. silverlight 3 datagrid x: nom numéro
- 3. Comment lier les enfants d'une grille à une liste?
- 4. Comment créer un travail par lots X ++ dans Axapta 3.0?
- 5. Comment définir une largeur de la disposition ColumnDefinition de la grille Silverlight sur "*" par programme?
- 6. Comment effacer tous les formulaires/données de grille dans Silverlight?
- 7. Matrix3D.pointAt dans Silverlight 3.0
- 8. silverlight-comment ouvrir les détails de la grille dans une nouvelle page
- 9. Silverlight 3.0 writableBitmap
- 10. Comment obtenir par programmation les touches de raccourci réservées par Mac OS X
- 11. Comment obtenir l'adresse du point (x, y) dans une grille de taille (w, h)
- 12. Comment obtenir le nom de l'utilisateur actif via la ligne de commande sous OS X?
- 13. projection conique conforme Lambert pour obtenir les valeurs x, y d'une grille en java
- 14. Comment itérer par programmation les lignes de données de grille?
- 15. Comment obtenir le nom de la classe
- 16. Comment obtenir une référence au ItemsPanel d'un ListBox Silverlight
- 17. Prise en charge de la sérialisation binaire Silverlight 3.0?
- 18. Comment supprimer efficacement tous les x enfants de l'entité parent sauf les derniers en utilisant NHibernate?
- 19. Comment obtenir le nom de propriété actuel par réflexion?
- 20. communication silverlight 3.0 avec winforms
- 21. obtenir la liste des enfants dans SimpleXMLElement PHP
- 22. Comment créer XElement avec l'espace de nommage par défaut pour les enfants sans utiliser XNamespace dans tous les nœuds enfants
- 23. Silverlight - Obtenir les informations de domaine
- 24. Obtenir la position d'une colonne de la grille
- 25. Silverlight RenderTransforms est-il disponible pour les enfants?
- 26. Fenêtres enfants Silverlight dans le modèle MVVM
- 27. comment obtenir toutes les propriétés d'un contrôle utilisateur [Vue grille]
- 28. Comment réordonner par programme les enfants d'une sous-classe ATFolder?
- 29. La collection enfants Silverlight Canvas a été modifiée
- 30. Comment créer un panneau Silverlight qui organise les éléments enfants pour éviter les chevauchements?
woot! cela marche. J'ai trouvé une alternative un peu plus complexe mais qui fonctionne aussi: private Button myButtnon; foreach (FrameworkElement fe dans myGrid.Children) { if (fe.GetType() == typeof (Button) myButton = fe comme Bouton;} – Maciek
Notez que myButton serait un champ d'accessibilité interne par là même à partir du code extérieur le code-behind, vous pouvez y accéder sans avoir recours à FindName – AnthonyWJones
si vous aviez une idée de combien de temps j'ai cherché cette réponse simple! merci pour la question droite aussi – Arrie