2009-10-13 8 views
7

Tengo un texto que tiene marcadores de línea nueva "\ r \ n". Me gustaría tener las nuevas líneas en un bloque de texto de WPF. He intentado reemplazar "\ r \ n" con "& # 13;" (sin los espacios), que funcionó cuando configuré la propiedad Text en XAML, pero no parece funcionar cuando configuro desde el código C# detrás.¿Cuál es la mejor manera de obtener párrafos en un bloque de texto WPF? (caracteres Newline?)

Entonces ... ¿cuál es la forma estándar de convertir "\ r \ n" a nuevas líneas en un bloque de texto WPF?

¡Thx por adelantado!

[Editar] Después de recibir respuestas aquí, así es como estoy asignando texto con "\ r \ n" líneas nuevas a un bloque de texto WPF. Funciona bien, pero en términos de codificación, ¿alguien puede confirmar que es una forma razonable de hacerlo?

 // 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)); 
     } 

[/ editar]

Respuesta

25

Pruebe esto para obtener una solución más centrada en WPF.

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

Consulte también: XAML based Answer

+0

Gracias! Eso es perfecto y la forma en que he decidido ir. – MrGreggles

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

estoy perdiendo algo claramente, lol: http://screencast.com/t/tKjtFMk8Jv – MrGreggles

+0

Tal vez no funciona con SL? De todos modos, leí mal tu pregunta, mira mi respuesta actualizada. Funciona con WPF, no estoy seguro de SL. –

+0

Gracias por sus respuestas. Elegí la respuesta de Ash, porque WPF está centrada y, por lo tanto, me parece que es la mejor opción. – MrGreggles

0

Al escribir C# siempre uso "System.Environment.Newline" para el retorno de carro de línea nueva.

Significa que no tiene que preocuparse por la codificación de caracteres ni por el sistema operativo de destino.

También he encontrado que funciona en la GUI de WPF cuando se invoca desde el archivo .cs subyacente.

+0

Gracias por la respuesta. En este caso, me he ido con la solución centrada en WPF. – MrGreggles

Cuestiones relacionadas