Social Icons

jueves, 15 de noviembre de 2012

Click funciona pero Tapped causa error en Windows 8

Nos han rechazado la app de la tienda de Windows 8 porque peta cuando el usuario toca o hace Tap o pone su zarpa en una grid view. Como no tenemos una surface estábamos haciendo las pruebas en el simulador, pero con la herramienta del ratón y no con la del dedo y funcionaba perfectamente…

Se cuelga cada vez que tocas en un elemento dentro de una GridView y es curioso porque se cuelga justo en el momento en el que tocas, el código ni siguiera llega a ejecutar el callback. La información del cuelgue tampoco nos da información útil, como era de esperar.

Parece que hay un error en la GridView y tras ser asignada a un DataContext con datos necesita ser refrescada antes de aceptar Taps, aunque funciona bien con los Clicks.

No hay forma o yo no la he encontrado de refrescar el UI en WinRT, lo que creo que resolvería el problema, así que he tomado dos caminos diferentes para tratar de evitar el fallo

  • Informes de carga rápida: Estoy pre-cargando los contenidos de los informes que cargan rápido cuando se ejecuta la app. Haciendo esto relleno todas las GridViews en páginas diferentes de las que el usuario está viendo, en segundo plano. Una vez que se selecciona la página en donde reside la GridView ésta es renderizada junto con el resto de la página y se solventa el problema.
  • Informes de carga lenta: También pre-cargo el contenido de estos informes, pero si el usuario los muestra antes de que se rellene la GridView con lo que los datos se mostrarían pero el control no se refrescaría y el Tapped seguiría fallando. Para evitar esto he cambiado también el comportamiento de la carga de datos. Asigno el DataContext antes y lo actualizo varias veces, una vez por cada paquete de información que recibo. Así el GridView se refresca unas cuantas veces y se soluciona el problema con el Tapped.

Los chavales del Windows Store App Lab han dicho que van a buscar una solución al problema pero yo creo que este es uno de esos errores que se arregla con un paquete en el Windows Update… Os mantendré informados si se inventan algo nuevo.


***ACTUALIZACIÓN***
Un experto de Microsoft me ha apuntado que si creas y añades los datos a la GridView en el código y después la añades a la página funciona correctamente. Lo he probado y es verdad.

Los templates en mis GridViews son complejos así que haré UserControls con las GridViews de manera que pueda crearlas con datos en código sin perder la posibilidad de seguir usando MVVM. Esto todavía no lo he probado.

No hay comentarios: