2011-12-03 19 views
6

È possibile aggiungere colori dinamici a un oggetto TextBlock ..i.e. avere un carattere in un colore e il successivo in un altro colore.Più colori in TextBlock

<TextBlock Text="{Binding no}" TextWrapping="Wrap" Margin="10,0,0,0" Style="{StaticResource PhoneTextSubtleStyle}" FontSize="40" Foreground="#A400C4FF" > 
    // Can we add something here to specify what colours for what chars 
</TextBlock> 

Fondamentalmente inserire una sequenza di 4 carattere dinamico dal n. L'ho legato a questo TextBlock all'interno di un ListBox. È possibile avere i personaggi in diversi colori.

Se è così possibile aggiungere questi colori dinamicamente per es. Se faccio clic su un pulsante alcuni caratteri cambiano colore?

Grazie. Qualsiasi aiuto è apprezzato.

risposta

25

In realtà, è possibile, che può rivelarsi utile quando si sta facendo uno StringFormat su un blocco di testo associato a dati o su un numero di altri luoghi.

Se si voleva provare, come qui è un esempio di SL per un'etichetta di modulo che mette un asterisco rosso accanto al testo Campi richiesti, ma poi può anche aggiungere più cose come mostrato nell'esempio. Dovrebbe funzionare per Silverlight, WPF, UWP, ecc ...

<TextBlock> 
     <Run Text="*" Foreground="#FFE10101"/><Run Text="Required Line" /> 
     <Run Text="Red" Foreground="Red"/> 
     <Run Text="Blue" Foreground="Blue"/> 
     <Run Text="{Binding SomeString, StringFormat='Hell ya you can make \{0\} a different color!'}" Foreground="Orange"/> 
</TextBlock> 
0

Il TextBlock non supporta più colori di primo piano.

È possibile ricreare questo comportamento utilizzando più blocchi di testo (uno per ogni lettera) e posizionandoli all'interno di un wrappanel. Puoi quindi cambiare il colore dei singoli caratteri/lettere come desideri.
Attenzione al probabile impatto delle prestazioni che questo potrebbe avere. I margini attorno alle singole lettere dovranno essere adeguati per ricreare il comportamento standard. Prestare particolare attenzione alla punteggiatura.

+0

Grazie Funziona !! – cjds

0

Sto sviluppando per Mango con l'SDK WP7. È possibile utilizzare <Esegui>. Sembra un po 'buggy su WP7, è necessario aggiungere spazi sulla proprietà Run.Text per ottenere la corretta spaziatura:

<TextBlock>Hello<Run Foreground="Bisque" Text=" Holla "></Run>and hello again!</TextBlock>; 
+0

Come posso impostare il testo in questo tag Run dinamicamente? – iamatsundere181