none
Refrescar UI RRS feed

  • Pregunta

  • Buenas tardes,

    estoy actualizando una App que tengo en la que utiliza un hub con gridview dentro. Lo que utilizo para pasarle los datos es un ObservableDictionary en la que guardo dos grupos de datos que a su vez tienen ítems de otro tipo de datos. Hasta aquí me funciona todo bien.

    Ahora quiero añadir información que se actualiza cada x tiempo (de forma aleatoria, puede ser segundos como minutos, por lo que el usuario puede estar con ese frame mostrándose o puede estar en otro y tiene que estar actualizado para cuando vuelva). El proceso de descarga de los datos y actualizar el objeto ObservableDictionary (modifcando los datos oportunos) funciona sin ningún problema. El fallo que tengo es que la interfaz no se refresca. Y lógicamente no puedo hacer un clear de ese objeto y volver a llenarlo puesto que perdería la ubicación del usuario en la lista y estaría pegando flashes molestos. Lo que hago para actualizar los datos es tras ejecutarse el evento del Dispatcher_tick accedo al objeto del ObservableDictionary y modifico los datos oportunos.

    ¿Qué es lo que debería hacer/añadir para que la interfaz se dé cuenta del cambio y actualice el contenido mostrado?

    Muchas gracias

    domingo, 5 de julio de 2015 18:37

Respuestas

  • He encontrado la solución. Os la explico resumida. Había utilizado la clase List<> la cual no notifica los cambios a la UI. La mejor colección es ObservableCollection<> la cual notifica a la interfaz cualquier cambio de añadir, eliminar, mover, etc. Pero si se modifica una propiedad de algunos de los ítem, es probable que no lo detecte, por lo que es recomendable implementar en la clase del tipo de objeto INotifyPropertyChanged  En la documentación hay ejemplos de como utilizarlo.

    Muchas gracias

    • Marcado como respuesta cansado293 jueves, 9 de julio de 2015 17:51
    jueves, 9 de julio de 2015 17:51