Pregunta

Tengo una sencilla aplicación WPF que contiene un control de usuario que está animado en y fuera por un par de guiones gráficos en la ventana principal. Estoy animando la opacidad del control de usuario, scaletransform.scalex y scaletransform.scaley a estallar dentro y fuera de la vista. Se ve bien a excepción de la primera vez que se ejecuta. La animación está preparada para dar 3/10 de segundo, aunque he aumentado este durante mi prueba. He tratado de establecer un valor por defecto en una fracción de segundo para ver si hay un problema en el que los valores de las propiedades que estoy animando el impago no se como se esperaba. Que no hicieron nada. Me llamo incluso explícitamente mi animación "ocultar" en la ventana de carga para ver si esto me ayudaría a establecer mis valores por defecto, pero que no funcionó bien. ¿Hay alguna inicialización que el tiempo de ejecución está haciendo la primera vez que enciendo la animación? ¿Hay alguna manera de llamar explícitamente a ese tipo de inicialización antes de mostrar la interfaz de usuario? El síntoma es que el control no es aún visible hasta alrededor de 2/10 de un segundo en la primera animación. A veces es más largo y el control muestra hasta después de que se ha animado completamente (opacidad y el tamaño son sus valores finales cuando finalmente se muestra).

¿Fue útil?

Solución

Parece que se está configurando el DataContext del control de usuario justo antes de la animación. Es de suponer que haya unión pasando, que es la creación de objetos visuales y agregarlos al árbol visual, al mismo tiempo que la animación se supone que empezar. Esto requiere un procesamiento que la animación está luchando por. La forma de evitar esto es tener el control de una instancia (con DataContext conjunto), pero oculta, por lo que la creación del objeto visual no necesita ser realizado en el momento de la animación. (A través de mi compañero de trabajo Tim Lee)

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