2009-10-13 7 views
7

Ho del testo con "\ r \ n" marcatori di nuova riga. Mi piacerebbe avere le nuove righe in un blocco di testo WPF. Ho provato a sostituire "\ r \ n" con "& # 13;" (senza spazi), che ha funzionato quando ho impostato la proprietà Text in XAML, ma non sembra funzionare quando si imposta il code-behind C#.Qual è il modo migliore per ottenere i paragrafi in un blocco di testo WPF? (caratteri di nuova riga?)

Quindi ... qual è il modo standard per convertire "\ r \ n" in newline in un blocco di testo WPF?

Thx in anticipo!

[Modifica] Dopo aver ricevuto le risposte, ecco come sto assegnando il testo con "\ r \ n" newlines a un blocco di testo WPF. Funziona bene, ma in termini di codifica qualcuno può confermare che è un modo ragionevole per andare?

 // assign the message, replacing "\r\n" with WPF line breaks 
     string[] splitter = new string[] { "\r\n" }; 
     string[] splitMessage = message.Split(splitter, StringSplitOptions.None); 

     int numParagraphs = splitMessage.Count(); 
     if (numParagraphs == 1) 
     { 
      this.Message.Text = message; 
     } 
     else 
     { 
      // add all but the last paragraph, with line breaks 
      for (int i = 0; i < splitMessage.Count() - 1; i++) 
      { 
       string paragraph = splitMessage[i]; 
       this.Message.Inlines.Add(new Run(paragraph)); 
       this.Message.Inlines.Add(new LineBreak()); 
      } 
      // add the last paragraph with no line break 
      string lastParagraph = splitMessage[splitMessage.Count() - 1]; 
      this.Message.Inlines.Add(new Run(lastParagraph)); 
     } 

[/ Modifica]

risposta

25

Prova questi per una soluzione più centrica WPF.

TextBlock.Inlines.Add(new Run("First")); 
TextBlock.Inlines.Add(new LineBreak()); 
TextBlock.Inlines.Add(new Run("Second")); 

Consulta anche: XAML based Answer

+0

Grazie! Questo è azzeccato e il modo in cui ho deciso di andare. – MrGreggles

6
textBlock.Text = string.Format("One{0}Two", Environment.NewLine); 
+0

sto chiaramente manca qualcosa, lol: http://screencast.com/t/tKjtFMk8Jv – MrGreggles

+0

Forse non funziona con SL? Ad ogni modo, ho letto male la tua domanda - vedi la mia risposta aggiornata. Funziona con WPF - non sono sicuro di SL. –

+0

Thx per le vostre risposte. Ho scelto la risposta di Ash, essendo WPF centric e come tale sembra il modo migliore per andare. – MrGreggles

0

Durante la scrittura di C# Io uso sempre "System.Environment.Newline" per il ritorno a capo del carrello.

Significa che non è necessario preoccuparsi della codifica dei caratteri o di quale sistema operativo di destinazione utilizza.

Ho anche trovato che funziona sulla GUI WPF quando chiamato dal file CSC sottostante.

+0

Grazie per la risposta. In questo caso sono andato con la soluzione WPF-centrica. – MrGreggles

Problemi correlati