Pergunta

Eu tenho um aplicativo WPF simples que contém um controle de usuário que é animado e sair por um par de storyboards na janela principal. Estou animando a opacidade do controle do usuário, scaletransform.scalex e scaletransform.scaley para colocá-la dentro e fora de vista. Ele parece legal, exceto pela primeira vez que é executado. A animação é ajustado para tomar 3/10 de segundo, embora tenha aumentado isso durante meus testes. Eu tentei configurar um valor padrão em uma fração de segundo para ver se há um problema em que os valores das propriedades Estou animando não estão inadimplentes como esperado. Que não fez nada. Eu mesmo explicitamente chamar minha animação "esconder" na janela carregada para ver se isso iria me ajudar a definir meus valores padrão, mas isso não quer trabalhar. Existe alguma inicialização que o tempo de execução está fazendo a primeira vez que disparar a animação? Existe uma maneira que eu posso chamar explicitamente esse tipo de inicialização antes de mostrar a interface do usuário? O sintoma é que o controlo não é ainda visível até cerca de 2/10 de segundo para a primeira animação. Às vezes é mais longo e os de controle aparece depois de ter sido totalmente animado (opacidade e tamanho são seus valores finais, quando ele finalmente mostra-se).

Foi útil?

Solução

Parece que você está definindo o DataContext do UserControl direita antes da animação. Provavelmente, você ter ligação acontecendo, o que está criando objetos visuais e adicioná-los à árvore visual ao mesmo tempo, a animação é suposto para começar. Isso requer o processamento que a animação está lutando. A maneira de evitar isso é ter o controle instanciado (com conjunto DataContext), mas escondido, por isso a criação do objeto visual não precisa ser realizada no momento da animação. (Através do meu colega de trabalho Tim Lee)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top