Si tengo un componente derivado de ItemsControl
, ¿puedo acceder a una colección de sus hijos para que pueda recorrerlos para realizar ciertas acciones? Parece que no puedo encontrar ninguna manera fácil en este momento.¿Cómo accedo a los hijos de un ItemsControl?
Respuesta
Una solución similar a la de Seb, pero probablemente con un mejor rendimiento:
for(int i = 0; i < itemsControl.Items.Count; i++)
{
UIElement uiElement =
(UIElement)itemsControl.ItemContainerGenerator.ContainerFromIndex(i);
}
Supongo que ItemsControl.Items[index]
no funciona, ¿no?
No estoy siendo gracioso, y no lo he comprobado, esa es solo mi primera suposición. Con mucha frecuencia, un control tendrá una propiedad indexadora de elementos, incluso si está enlazado a datos.
Esto no tiene' t recupera los elementos "secundarios" (controles), solo los elementos de la lista, que no son necesariamente controles. –
No, si usa una fuente de datos y una plantilla de datos, p. una carga de cadenas para usar en una plantilla de datos, obtiene la cadena devuelta como el elemento. –
Bastante justo. Dejaré mi respuesta ya que sus comentarios podrían ser útiles. –
Utilice la propiedad ItemsControl.Items
:
foreach (var item in itemsControl1.Items)
{
Console.WriteLine(item.ToString());
}
Para repetir mi comentario, si usa una fuente de datos y una plantilla de datos, p. una carga de cadenas para utilizar en una plantilla de datos, se obtiene la cadena devuelta como el elemento –
Bueno, entonces debería ir con la solución de Seb – Oskar
ver si esto le ayuda a cabo:
foreach(var item in itemsControl.Items)
{
UIElement uiElement =
(UIElement)itemsControl.ItemContainerGenerator.ContainerFromItem(item);
}
Hay una diferencia entre los elementos lógicos en un control y una UIElement
.
Para identificar ItemsControl
'controles secundarios de enlace de datos s (como un ToggleButton
), puede utilizar esto:
for (int i = 0; i < yourItemsControl.Items.Count; i++)
{
ContentPresenter c = (ContentPresenter)yourItemsControl.ItemContainerGenerator.ContainerFromItem(yourItemsControl.Items[i]);
ToggleButton tb = c.ContentTemplate.FindName("btnYourButtonName", c) as ToggleButton;
if (tb.IsChecked.Value)
{
//do stuff
}
}
- 1. Cómo espaciar a los hijos de un div con css?
- 2. ¿Cómo accedo a los elementos del diccionario?
- 3. Deserializando XML, ¿cómo accedo a los atributos?
- 4. ¿Cómo accedo a un iframe de CasperJS?
- 5. ¿Cómo accedo a ModelState desde un ActionFilter?
- 6. Desplazamiento a un elemento de virtualización ItemsControl
- 7. Animate Inserciones a ItemsControl
- 8. Cómo accedo a un archivo compartido programáticamente
- 9. ¿Cómo accedo a Locale desde un JSP?
- 10. ¿Cómo accedo a los datos de netstat en Python?
- 11. ¿Cómo unir los hijos de una grilla a una lista?
- 12. ¿Cómo se obtienen los hijos de un widget en Qt?
- 13. ¿Cómo accedo a un java de iframe desde un usuario?
- 14. ¿Cómo obtengo los hijos de un elemento en Watin?
- 15. Zend framework 2: Cómo accedo a los valores de configuración de los módulos desde un controlador
- 16. ¿Cómo conseguir que todos los hijos de un padre controlen?
- 17. ¿Cómo accedo a los registros con python en gdb
- 18. Forzar WPF para crear los elementos en un ItemsControl
- 19. ¿Cómo accedo a los valores creados por serializeArray en JQuery?
- 20. ¿Cómo accedo a un archivo Silverlight XAP en un dominio?
- 21. Ember.js: ¿Cómo accedo a un elemento específico en un CollectionView?
- 22. la conversión de los hijos de XElement a cadena
- 23. ¿Cómo accedo a un archivo de configuración dentro del contenedor?
- 24. ¿Cómo accedo a parametros de Sinatra usando un símbolo?
- 25. ¿Cómo accedo a un control en HeaderTemplate de mi GridView
- 26. ¿Cómo accedo a un valor '@attr' en JSON con jQuery
- 27. Obtener hijos de un elemento sin los nodos de texto
- 28. ¿Cómo accedo a SQLite desde VBA?
- 29. Mostrando todos los hijos de cada padre
- 30. ¿Cómo accedo a la solicitud HTTP?
+1, gracias aunque simple resolvió mi problema –
parece que el control no tiene renderizado/mostrado aún, no tendrá ningún elemento. – Maslow