Domanda

Nel nostro progetto di Silverlight 2 abbiamo creato un proprietà associata per eseguire la conversione on-the-fly di testo proprietà di vari controlli utente. Per ottenere ciò, associare l'evento Loaded del FrameworkElement quando la proprietà è impostata. Quando l'evento, prendiamo il valore esistente di proprietà di testo ed eseguire alcune semplici sostituzioni di stringa su di esso, prima di sostituire il valore della proprietà con il testo tradotto. Tuttavia, questo risultato nel controllo viene eseguito il rendering con il testo non tradotto, allora il testo è rapidamente sostituito con la versione tradotta.

C'è un evento alternativo possiamo agganciare che avrebbe sparato prima che il controllo è reso?

È stato utile?

Soluzione

Ho cambiato il mio codice in modo che la società effettua la traduzione non appena il setter per la proprietà associata è chiamato. Non c'è bisogno di aspettare il FrameworkElement di avere carico finito, come posso cambiare la proprietà Text molto tempo prima che l'elemento è reso.

I miei pensieri iniziali su come utilizzare l'evento Loaded erano per ridurre il tempo di avvio della domanda da solo traducendo i controlli che erano visibili sullo schermo. Come si è visto, sto duplicare una parte del lavoro svolto dal runtime, come il runtime non chiamerà il setter di proprietà fino a che non ha bisogno di comunque.

Altri suggerimenti

Non sono del tutto sicuro di questo, ma si può utilizzare l'evento LayoutUpdated. Esso scatterà quando il controllo viene ridimensionato e tale (si poteva prendere misure per garantire il vostro codice viene eseguito solo una volta).

Lo so che non sembra come l'evento "giusto" per questo, ma purtroppo Silverlight po 'ti lascia lì tenendolo quando si tratta di eventi.

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