Pregunta

Tengo un DataGrid de Silverlight que contiene una única columna de plantilla que muestra un control de usuario. El control del usuario tiene una barra de progreso para representar el procesamiento y cuando el procesamiento se completa, una animación oculta la barra de progreso y muestra una etiqueta terminada.

Hay dos instancias en las que parece que la cuadrícula de datos no se vuelve a dibujar:

Primero , cuando un usuario realiza un gran desplazamiento, entonces la red de datos comenzará por volver a dibujar la animación cuando el control de usuario aparezca y finalmente llegará a un punto en el que no volverá a dibujar nada.

Segundo , Hay un evento de clic en el control de usuario que muestra una ventana emergente. Cuando se cierra la ventana emergente, nuevamente el control de usuario no se vuelve a dibujar correctamente.

¿Alguna idea de por qué ocurre este comportamiento y cómo evitarlo?

¿Fue útil?

Solución

La respuesta anterior es correcta. Descubrí que a veces tienes que manejar adecuadamente los eventos Loading_Row y Unloading_Row si quieres que alguno de tus controles se comporte correctamente. En mis casos, tener las propiedades de los controles realmente vinculados a un objeto para que funcione mejor. Si intenta confiar en las animaciones y la visibilidad y similares, verá un comportamiento extraño, pero si enlaza la barra de progreso a un objeto que mantiene el progreso de cada elemento detrás de escena, cada vez que se muestre esa fila, se volverá a enlazar y volver a dibujar.

Otros consejos

Debe comprender que un DataGrid no tiene una instancia de su control para cada fila de la cuadrícula. La fuente de datos podría tener millones de filas, mientras que la cuadrícula no necesita más instancias de su control de las que caben en la pantalla. Esto significa que cuando se desplaza, por ejemplo, no revela instancias de su control previamente invisibles; simplemente asigna a los controles actualmente visibles los valores necesarios para hacer la visualización correcta para la posición de desplazamiento actual.

No sé si hay una solución.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top