Duda con ItemContainerGenerator...
-
miércoles, 02 de mayo de 2012 11:26
Buenas a todos,
Tengo un problemilla, a ver si me pueden ayudar...
El tema es el siguiente: Tengo un list checkbox (un listbox modificado). Añado items sin problema. mi lista actualmente tiene 44 items (items.count)
aqui va el tema y la duda cuando recorro la lista para saber si hay alguno checkeado recupero el container de la siguiente forma:
for (int i = 0; i < listapr.Items.Count; i++)
{
ListBoxItem checkedItem = (ListBoxItem)this.listapr.ItemContainerGenerator.ContainerFromItem(listapr.Items[i]);
if (checkedItem.IsSelected)
{....
}
el problema es que cuando llego al indice 29 checkeditem vale null, es decir no recupera el container y por eso la comparacion posterior (el If) peta.
La pregunta es, si tengo 44 items por que a partir del 28 no me deja recuperar mas items?
¿Estoy haciendo algo mal? Tengo que insertar los items de otra forma
PD: Para insertar los items, uso items.add(NuevoItem)
Muchas gracias a todos.
Todas las respuestas
-
miércoles, 02 de mayo de 2012 11:34
Otra cosa que no entiendo y quizá tenga algo que ver
la propiedad listap.ItemContainerGenerator.GeneratorPositionFromIndex[i] a partir del indice 28, index vale siempre 28 y offset es el que va cambiando
es decir si i vale 30
.index = 28
.offset = 2
¿Tiene esto algo que ver? ¿Para que sirve esta propiedad?
Gracias a todos nuevamente.
-
miércoles, 09 de mayo de 2012 9:38
Ya has resuelto?
Al parecer, la explicación que esto pase tiene que ver con la virtualización de elementos. Si se virtualizan, no se puede asegurar la existencia en el contenedor en todo momento.
Prueba poner VirtualizingStackPanel.IsVirtualizing="false" al listbox (en el XAML)
Si funciona, no dejes de leer lo que significa hacer eso: http://msdn.microsoft.com/en-us/library/system.windows.controls.virtualizingstackpanel.isvirtualizing.aspx
Salu2
MCTS ADO.NET, MCTS WCF, MCTS WinForm, MCTS ASP.NET, MCPD Enterprise.
Mi perfil: My geeks
Colaborador: www.secondnug.com
- Editado Omar del Valle Rodríguez miércoles, 09 de mayo de 2012 9:39
- Editado Omar del Valle Rodríguez miércoles, 09 de mayo de 2012 9:40

