Pergunta

Cenário: Eu tenho uma caixa de texto (numérico), um botão e um rótulo. Quando o botão é clicado eu gostaria o rótulo de "animado" para o valor numérico na caixa de texto (como um seletor giratório)

Dada:

a) que as animações em storyboards não pode ter DataBindings (porque não são FrameworkElements) b) a falta de gatilhos no Silverlight

O que é o melhor, e com menos de acoplamento do modelo fim de storyboard da vista, forma de atualizar o valor animação alvo e iniciar a animação quando o botão é clicado?

Nota: O cenário é conceitual, por isso não se concentrar sobre as especificidades de números 'animadores' ou qualquer coisa

Foi útil?

Solução

Se o seu objetivo é estritamente para reduzir o código-behind na vista eu acho que um comportamento anexado na etiqueta iria trabalhar para isso. O comportamento anexado na etiqueta exporia o número a ser animada e quando esse número muda uma animação (em código) seria executado para animar a partir do valor antigo para o novo valor.

Uma desvantagem é que a sua animação está agora em código, a menos que você armazenar um templated (acaba de valores falsos para começar) versão dele em um algum lugar arquivo de recurso onde você pode carregá-lo quando necessário e substituir os valores templated.

Este artigo de Josh Smith parece para ser a autoridade sobre comportamentos anexados;

http://joshsmithonwpf.wordpress.com/ 2008/08/30 / introdução-a-anexadas-comportamentos /

Outras dicas

Recentemente, tive de resolver um problema semelhante em um aplicativo MVVM. Meu problema era que eu precisava para animar a altura de um recipiente de zero a auto. Desde Auto é um valor dinâmico reconheci que a animação (ou storyboard) precisaria ser construído (ou manipulado) sob demanda. A solução que eu coloquei no lugar envolvia o uso de visualização de código-behind para atualizar e disparar a animação.

Esta não é a abordagem mais MVVM-friendly; no entanto, animações em WPF pode ser complicado em XAML. Uma vez que esta solução é realmente apenas uma solução alternativa para uma limitação XAML parece tudo bem para amarrar o código diretamente para a vista. Da mesma forma, se os pontos de vista foram ridicularizados, em seguida, não haveria elementos de estrutura para animar, para que ele realmente não faria sentido colocar esse código no lado da VM.

Alguém tem uma abordagem melhor?

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