Formattare il testo in un TextBlock

Come ottengo la formattazione di un testo all’interno di un controllo TextBlock nella mia applicazione WPF?

ad esempio: mi piacerebbe avere alcune parole in grassetto, altre in corsivo e alcune in colors diversi, come in questo esempio:

inserisci la descrizione dell'immagine qui

La ragione dietro la mia domanda è questo problema reale:

 lblcolorfrom.Content = "Colour From: " + colourChange.ElementAt(3).Value.ToUpper(); 

Vorrei che la seconda parte della stringa fosse in grassetto, e so che potrei usare due controlli (etichette, TextBlocks, ecc.) Ma preferirei non farlo, a causa della grande quantità di controlli già in uso.

Devi usare Inlines :

     

Con associazione:

     

Puoi anche associare le altre proprietà:

     

È ansible eseguire il binding tramite i convertitori se si dispone di grassetto come booleano (ad esempio).

Puoi farlo in XAML abbastanza facilmente:

  Hello my faithful computer.You rock!  

Dai un’occhiata a questo esempio di Charles Petzolds Bool Application = Code + markup

 //---------------------------------------------- // FormatTheText.cs (c) 2006 by Charles Petzold //---------------------------------------------- using System; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; using System.Windows.Documents; namespace Petzold.FormatTheText { class FormatTheText : Window { [STAThread] public static void Main() { Application app = new Application(); app.Run(new FormatTheText()); } public FormatTheText() { Title = "Format the Text"; TextBlock txt = new TextBlock(); txt.FontSize = 32; // 24 points txt.Inlines.Add("This is some "); txt.Inlines.Add(new Italic(new Run("italic"))); txt.Inlines.Add(" text, and this is some "); txt.Inlines.Add(new Bold(new Run("bold"))); txt.Inlines.Add(" text, and let's cap it off with some "); txt.Inlines.Add(new Bold(new Italic (new Run("bold italic")))); txt.Inlines.Add(" text."); txt.TextWrapping = TextWrapping.Wrap; Content = txt; } } } 

Ci sono vari elementi in Inline che possono aiutarti, per le opzioni di formattazione più semplici puoi usare Bold , Italic e Underline :

  Sample text with bold, italic and underlined words.  

inserisci la descrizione dell'immagine qui

Penso che valga la pena notare che questi elementi sono in realtà solo delle abbreviazioni per gli elementi Span con varie proprietà impostate (ad esempio: per Bold , la proprietà FontWeight è impostata su FontWeights.Bold ).

Questo ci porta alla nostra prossima opzione: l’elemento Span sopra.

Puoi ottenere gli stessi effetti con questo elemento come sopra, ma ti vengono garantite ancora più possibilità; puoi impostare (tra gli altri) le proprietà Foreground o Background :

  Sample text with bold, italic and underlined words. Coloring is also possible.  

inserisci la descrizione dell'immagine qui

L’elemento Span può contenere anche altri elementi come questo:

  Italic text with some colorsng.  

inserisci la descrizione dell'immagine qui

C’è un altro elemento, che è abbastanza simile a Span , si chiama Run . The Run non può contenere altri elementi inline mentre lo Span può, ma puoi facilmente associare una variabile alla proprietà Text Run :

  Username:   

inserisci la descrizione dell'immagine qui

Inoltre, puoi fare l’intera formattazione da code-behind se preferisci:

 TextBlock tb = new TextBlock(); tb.Inlines.Add("Sample text with "); tb.Inlines.Add(new Run("bold") { FontWeight = FontWeights.Bold }); tb.Inlines.Add(", "); tb.Inlines.Add(new Run("italic ") { FontStyle = FontStyles.Italic }); tb.Inlines.Add("and "); tb.Inlines.Add(new Run("underlined") { TextDecorations = TextDecorations.Underline }); tb.Inlines.Add("words."); 

un buon sito, con buone spiegazioni:

http://www.wpf-tutorial.com/basic-controls/the-textblock-control-inline-formatting/

qui l’autore ti dà buoni esempi per quello che stai cercando! Overal il sito è ottimo per il materiale di ricerca e copre una grande quantità di opzioni che hai in WPF

modificare

Esistono diversi metodi per formattare il testo. per una formattazione di base (il più semplice a mio parere):

   TextBlock with bold, italic and underlined text.  

L’esempio 1 mostra la formattazione di base con testo grassetto e sottolineato.

Di seguito è incluso il metodo SPAN, con questo si evidenzia il testo:

   This is a TextBlock with several Span elements,  using a variety of styles .  

L’esempio 2 mostra la funzione span e le diverse possibilità con esso.

Per una spiegazione dettagliata controlla il sito!

Esempi