Pergunta

Em nosso projeto Silverlight 2 criamos uma propriedade anexada para realizar a tradução on-the-fly para propriedades de texto de vários controles de usuário. Para conseguir isso, ligar o evento Loaded da FrameworkElement quando a propriedade é definida. Quando o evento, tomamos o valor da propriedade de texto existente e realizar algumas substituições simples string nele, antes de substituir o valor da propriedade com o texto traduzido. No entanto, isso resulta no controle que está sendo processado com o texto não traduzido, em seguida, o texto é rapidamente substituída pela versão traduzida.

Existe um evento alternativo que pode ligar que o fogo antes que o controle é processado?

Foi útil?

Solução

Eu mudei meu código para que ele executa agora a tradução assim que o setter da propriedade anexada é chamado. Não há necessidade de esperar pela FrameworkElement ter carregamento acabado, como posso alterar a propriedade Text muito antes de o elemento é renderizado.

Meus pensamentos iniciais sobre como usar o evento Loaded foram para reduzir o tempo de inicialização do aplicativo em apenas traduzir os controles que eram visíveis na tela. Como se vê, estou a duplicação de alguns dos trabalhos realizados pelo tempo de execução, como o tempo de execução não irá chamar o setter propriedade até que ele precisa de qualquer maneira.

Outras dicas

Eu não estou totalmente certo sobre isso, mas você pode usar o evento LayoutUpdated. Ele será acionado quando o controle é redimensionado e tal (você poderia tomar medidas para assegurar o seu código executa somente uma vez.)

Eu sei que não parece ser o evento "certa" para isso, mas infelizmente Silverlight tipo das folhas você parado lá segurando-o quando se trata de eventos.

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