ReactiveUI - Ver rendimiento del localizador

En miWPF aplicación que hace uso deReactiveUIHe notado un área de bajo rendimiento.

Tengo un modelo de vista que contiene muchos otros modelos de vista livianos (piense en 30ish). Estos modelos de vista anidados son simples, generalmente representan un botón cada uno. Todos se muestran dentro de un control de usuario, dentro de unItemsControl que está conectado usando ReactiveUI'sOneWayBind. Esto significa que cada elemento se muestra usandoViewModelViewHost.

Entonces, el problema

En mi potente PC de escritorio, cuando navego a este modelo de vista, hay un retraso notable entre presionar el botón "ir al modelo de vista" y cambiar la vista, alrededor de 0,5 segundos. Cuando ejecuto el mismo software en una Power-PC, el retraso es de casi 4 segundos. Este es un problema bastante grande desde el punto de vista de UX.

Lo que he aprendido

Intenté perfilar y depurar mi código durante mucho tiempo, y no encontré áreas problemáticas. Zilch (nota:usando JustMyCode en VS para que ReactiveUI no apareciera) Sin embargo, encontré una manera de eliminar el problema. En lugar de vincularse a laItemsControl.ItemSource conOneWayBind, Lo hice en XAML, como tal:ItemSource={Binding MyViewModels} y configurando elDataTemplate a mano. Esto da como resultado una transición mucho más rápida.

Cuando te unes conOneWayBind con unItemsControl, unaViewModelViewHost se crea automáticamente para usted y elViewLocator se utiliza para encontrar la vista de su modelo de vista. Asumo que esto es muy lento por alguna razón.

Pregunta

¿Alguien sabe cómo puedo evitar este impacto en el rendimiento sin tener que definir manualmente muchas plantillas de datos para un ItemsControl? Si tengo modelos de vista de modelos de vista de modelos de vista, entonces las cosas tienden a ponerse feas muy rápidamente. De mis experiencias pasadas conCaliburn.Micro, las convenciones de ubicación de vista fueron muy rápidas, por lo que también me pregunto si no estoy usandoReactiveUI correctamente, y que hay un enfoque alternativo que es más rápido.

Gracias.

TLDR;

ViewModelViewHost como unDataTemplate para ~ 30 modelos de vista hace que las vistas sean muy lentas cuando se cargan inicialmente, dejando que la IU parezca que se ha bloqueado. Hay alguna manera de evitar esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta