2011-04-01 8 views
15

Tengo una gran cantidad de estilos definidos para mi cuadrícula (colores de celda en función del estado, etc.). Ahora mismo uso DataTriggers para establecer los colores apropiados. Estoy buscando mejorar el rendimiento de mi aplicación y estaba pensando que la gran cantidad de estilos puede estar causando una desaceleración (debido a que los datos cambian constantemente y los estilos necesitan ser recalculados/actualizados). ¿Es mejor usar enlace de datos con convertidores en lugar de DataTriggers?DataTrigger vs databinding with converter performance wise

Si el objetivo se puede lograr con cualquiera de los métodos, ¿hay alguna diferencia de rendimiento? No estoy familiarizado con lo que sucede detrás de las escenas, así que no puedo estar seguro.

Respuesta

13

En this episode of the Hanselminutes podcast, invitado Laurent Bugnion (creador de MVVM Light) describe que hay un golpe de rendimiento asociado con el uso de convertidores. Indica que casi siempre es insignificante en las aplicaciones de escritorio, pero que en las aplicaciones WP7, se recomienda que los modelos de vista expongan cosas como los pinceles directamente, en lugar de depender mucho de los convertidores, especialmente si se trata de virtualización de listas, en cuyo caso el desplazamiento causará muchos invocaciones de la conversión.

Es posible que ocurra algo similar en su escenario, solo por el volumen de desencadenantes (o conversiones si hizo ese cambio).

Como una prueba de concepto, puede considerar envolver su modelo de vista en un "WPF Viewmodel", que expone los colores y otros valores específicos de WPF, en lugar de algún valor para determinar los colores. tiempo de ejecución invocando activadores y IValueConverters. Entonces podrá vincularse directamente a eso, y no usar desencadenantes ni convertidores. Me interesaría escuchar los resultados.

Cuestiones relacionadas