Silverlight: Existe um evento que dispara em um FrameworkElement antes de ser processado?
-
13-09-2019 - |
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?
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.