In qualsiasi applicazione che si sviluppa la presenza di Label e TextBlock è sicuramente assicurata, poiché permettono di visualizzare del testo, di effettuare data binding e sono perciò un elemento primario. La semplice visualizzazione di un testo può apparentemente sembrare non onerosa, ma in realtà subentrano in gioco molti fattori come il Template, gli effetti e l'aggregazione degli elementi che contiene.
Tutto questo può sembrare banale, ma in realtà incide enormemente in un'applicazione WPF, soprattutto in presenza di molti elementi, perciò se si vogliono ottimizzare le performance e rendere l'applicativo il più leggero possibile è necessario prima di tutto intervenire sul testo. Esiste infatti una classe Glyphs, del namespace System.Windows.Documents, che permette di rappresentare del testo, ma essendo primitiva garantisce maggiori performance.
L'utilizzo è piuttosto semplice; ecco un esempio:
<Glyphs FontUri="C:\WINDOWS\Fonts\TIMES.TTF" FontRenderingEmSize="100" StyleSimulations="BoldSimulation" UnicodeString="Hello World!" Fill="Black" />
La classe ha una serie di vincoli, come l'obbligo di specificare tramite Uri il file da usare. Se questo dispone di più font occorre indicare con #numero l'indice del font da usare, mentre è obbligatorio specificare il testo come stringa (il binding effettua già la conversione da solo se possibile). Occorre però prestare attenzione al fatto che non può essere vuota ed è perciò necessario utilizzare un converter per assicurarsi che UnicodeString abbia almeno un carattere vuoto, il quale non risulta visibile. Con Fill si indica poi il Brush da utilizzare, mentre con StyleSimulations è possibile applicare gli stili grassetto e/o italico.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- PWAConf 2020 - Online
- Reactive form tipizzati con FormBuilder in Angular
- Utilizzare ChatGPT con Azure OpenAI
- Mantenere sempre reattiva una Lambda di AWS
- Messaggi in tempo reale con Blazor Server
- Una chat con #aspnetcore e #websockets https://aspit.co/bmh di @GentiliMoreno #webapi #aspnetcore2
- Autenticarsi in modo sicuro su Azure tramite GitHub Actions
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Creare una MarkupExtension per accedere alle proprietà statiche in Silverlight 5.0
- Navigare la struttura visuale di un UIElement fino a recuperare l'elemento logico in Silverlight 3.0