Domanda

Ho una semplice applicazione WPF che contiene un controllo utente che è animato dentro e fuori da una coppia di storyboard nella finestra principale. Sto animare l'opacità del controllo utente, scaletransform.scalex e scaletransform.scaley per farla dentro e fuori di vista. Sembra fresco tranne che per la prima volta che viene eseguito. L'animazione è previsto per il 3/10 di secondo, anche se ho aumentato questo durante la mia prova. Ho provato a installare un valore predefinito a una frazione di secondo per vedere se c'è un problema in cui i valori delle proprietà che sto animando non sono inadempienti come previsto. Che ha fatto nulla. Chiamo anche esplicitamente mia animazione "nascondere" sulla finestra caricata per vedere se questo mi avrebbe aiutato a impostare i miei valori di default, ma che non ha funzionato neanche. C'è qualche inizializzazione che il runtime sta facendo la prima volta che mi licenzio l'animazione? C'è un modo per chiamare esplicitamente questo tipo di inizializzazione prima di mostrare l'interfaccia utente? Il sintomo è che il controllo non è nemmeno visibile fino a circa 2/10 di secondo nella prima animazione. A volte è più lungo ed il controllo si presenta dopo che è stato completamente animato (opacità e le dimensioni sono i loro valori finali quando si presenta finalmente in su).

È stato utile?

Soluzione

Sembra che si sta impostando il DataContext di UserControl a destra prima l'animazione. Presumibilmente si è vincolante in corso, che sta creando oggetti visivi e aggiungendoli alla struttura ad albero visuale, allo stesso tempo si suppone che inizi l'animazione. Ciò richiede l'elaborazione che l'animazione sta combattendo per. Il modo per evitare questo è di avere il controllo istanziato (con DataContext set), ma nascosto, così la creazione dell'oggetto visivo non deve essere eseguito al momento dell'animazione. (Tramite il mio collega Tim Lee)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top