Supongamos que tengo XAML que representa una Cuadrícula con algunos elementos secundarios, cada elemento secundario es un control diferente, con una x: Nombre. ¿Cómo puedo "obtener" esos controles de código por nombre?Silverlight 3.0: ¿Cómo obtengo grid children by x: Name?
Respuesta
Si el código que está escribiendo está en el archivo de código subyacente para el archivo xaml, entonces Visual Studio debería generar automáticamente variables miembro que contengan referencias a cualquier elemento con nombre en el archivo xaml. Entonces, si tiene un Botón con x: Nombre = "myButton", puede acceder a este botón a través de this.myButton.
Si desea hacer referencia a un elemento con nombre de algún lugar que no sea el archivo de código subyacente, puede llamar FindName en el elemento con el elemento llamado, por ejemplo:
Button myButton = myGrid.FindName("myButton") as Button;
donde myGrid es una referencia a la Cuadrícula en cuestión.
Cada control con una x: Nombre tiene un campo creado para él en la clase parcial que se crea para el XAML. Este campo tiene una accesibilidad interna. Por lo tanto, desde el código con cs "código subyacente" (¿por qué odio ese término?) Simplemente puede usar el nombre de control directamente en el código para acceder a él.
¿Serías tan amable y elaborado? – Maciek
Creo que quiere decir, si tiene x: Name = "MyNamedControl". Una vez que lo compile, el archivo Reference.g lo tendrá automáticamente disponible para que pueda simplemente escribir this.MyNamedControl – Paully
Pero si está haciendo plantillas, esto no sucederá y debería usar FindName – Paully
- 1. ¿Cómo obtengo Children of a ContentPresenter?
- 2. Silverlight Grid Splitter Comportamiento inesperado
- 3. ¿Por qué el acceso a mi Storyboard x: Name funciona en Silverlight pero no en WPF?
- 4. ¿Cuál es el equivalente de Silverlight 3.0 para BasedOn = "{StaticResource {x: Type TextBlock}}"
- 5. cómo eliminar X-Powered-By en ExpressJS
- 6. Ocultar X-Powered-By (nginx)
- 7. Actualizar XAttribute Value donde XAttribute Name = X
- 8. Silverlight (3.0): ¿Cómo agregar relleno de celdas a una cuadrícula?
- 9. Cómo seleccionar texto en el bloque de texto Silverlight 3.0
- 10. WPF Grid vs Stackpanel
- 11. Children of XElement
- 12. ¿Cómo implementan las bases de datos SQL 'ORDER BY x'?
- 13. ¿Cómo se configura Log4r con Rails 3.0.x?
- 14. div # name vs #name
- 15. Pantalla 360 Imagen en Silverlight 3.0 (No Panorama)
- 16. Combinación de .NET RIA Services y MVVM en Silverlight 3.0
- 17. ¿Cómo configuro un ancho de Columna de definición de disposición de Silverlight Grid en "*" programáticamente?
- 18. Silverlight 4 Equivalente a WPF "x: estático"
- 19. ¿Es posible obtener x: Nombre de un DependencyObject (Silverlight)?
- 20. Ocultando el encabezado X-Powered-By de PHP
- 21. Kohana 3.0.x ORM: Leer columnas adicionales en tablas dinámicas
- 22. seguridad de primavera (3.0.x) y suplantación de usuario
- 23. Reflection - get property name
- 24. Configurar Firefox 3.0.x para enviar un token de Kerberos
- 25. Will Hibernate método saveOrUpdate delete children?
- 26. ¿Cómo funciona GROUP BY?
- 27. Encuadernación WPF Canvas Children a una ObservableCollection
- 28. Linq-to-Sql: recursively get children
- 29. Android Hexagon Grid
- 30. Expandir TreeView completo en Silverlight
woot! esto funciona. Encontré una alternativa que es un poco más compleja pero funciona igual: botón privado myButtnon; foreach (FrameworkElement Fe en myGrid.Children) { si (fe.GetType() == typeof (botón) myButton = Fe como botón; } – Maciek
Nota que myButton habría un campo con accesibilidad interna por lo tanto, incluso de código fuera el archivo de código subyacente puede acceder a él sin recurrir a FindName. – AnthonyWJones
si tenía idea de cuánto tiempo busqué esta simple respuesta! gracias por la pregunta directa también – Arrie