2010-12-28 18 views
6

Ho bisogno di aggiungere una funzionalità alla mia semplice applicazione - per consentire all'utente di cambiare la dimensione del carattere per l'intera applicazione. È facile da fare? Puoi darmi qualche suggerimento su come iniziare? È necessario avere solo 3 dimensioni di carattere predefinite, ma la prima e unica soluzione che mi è venuta in mente è creare 3 temi diversi. È possibile renderlo più semplice?WPF - modifica dimensione carattere globale in fase di esecuzione

risposta

12

Fortunatamente, FontSize utilizza Property Value Inheritance. Ciò significa che fino a quando non si esegue l'override, FontSize verrà automaticamente propagato a tutti gli elementi di testo secondari. Di conseguenza, è possibile impostare una sola:

<Window FontSize="10" ...> 

e si applicherà a tutti gli elementi di testo in quella finestra che non hanno una dimensione di carattere. Per cambiarlo in codice è semplice così:

this.FontSize = 20; 

nel code-behind della finestra cambierà tutte le dimensioni dei caratteri specificati al volo. Questo funziona anche per le cose che non sembrano supportare la dimensione del carattere:

<Grid TextElement.FontSize="15" ...> 

Lo stesso vale per le altre proprietà del testo che hai citato.

+0

Questa è una soluzione incredibilmente semplice rispetto ad altre che ho visto. Grazie per l'aiuto! – TheBlindSpring

0

Al livello più elementare è necessario associare la proprietà FontSize del vostro TextBlocks ecc, per una variabile che si può quindi cambiare per essere uno dei tre valori predefiniti:

<TextBlock FontFamily="Arial" Text="Sample text" FontSize="{Binding TextSize}" /> 

Tuttavia, si avrebbe bisogno per ricordare di aggiungere questo a tutto il il testo.

Una soluzione migliore sarebbe quella di associare la dimensione degli stili utilizzati, ma di nuovo tutto il testo dovrebbe essere in stile. Se hai usato uno stile implicito, non dovresti ricordarti di aggiungere il riferimento al tuo testo, ma tutto il tuo testo dovrebbe apparire lo stesso. Se questo è un problema o meno dipenderà dalla tua applicazione.

3
Application.Current.MainWindow.FontSize = 12; 
Problemi correlati