2009-10-13 12 views
7

Ich habe etwas Text, der "\ r \ n" Newline-Marker hat. Ich hätte gerne die Zeilenumbrüche in einem WPF-Textblock. Ich habe versucht, "\ r \ n" durch "& # 13;" (ohne Leerzeichen), was funktionierte, als ich die Text-Eigenschaft in XAML setzte, aber nicht funktioniert, wenn ich aus dem C# -Code-Behind setze.Was ist der beste Weg, Absätze in einem WPF-Textblock zu bekommen? (Newline-Zeichen?)

Also ... Was ist der Standard Weg, um "\ r \ n" in Zeilenumbrüche in einem WPF Textblock zu konvertieren?

Danke im Voraus!

[Bearbeiten] Nachdem Antworten hier erhalten, ist dies, wie ich Text mit "\ r \ n" Zeilenumbrüche zu einem WPF Textblock zuweisen. Es funktioniert gut, aber in Bezug auf die Codierung kann jemand bestätigen, dass es ein vernünftiger Weg zu gehen ist?

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

[/ Edit]

Antwort

25

Versuchen Sie diese für eine WPF-zentrische Lösung.

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

Siehe auch: XAML based Answer

+0

Danke! Das ist genau richtig und so wie ich mich entschieden habe. – MrGreggles

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

ich etwas klar bin fehlt, lol: http://screencast.com/t/tKjtFMk8Jv – MrGreggles

+0

Vielleicht mit SL nicht funktioniert? Wie auch immer, ich habe deine Frage falsch gelesen - siehe meine aktualisierte Antwort. Es funktioniert mit WPF - nicht sicher über SL. –

+0

Danke für Ihre Antworten. Ich habe mich für Ashs Antwort entschieden, da es WPF-zentriert ist und daher der beste Weg zu gehen scheint. – MrGreggles

0

Wenn C# zu schreiben ich "System.Environment.Newline" immer für die Newline Wagenrücklauf.

Es bedeutet, dass Sie sich keine Gedanken über die Zeichenkodierung oder das Ziel-Betriebssystem machen müssen.

Ich habe auch gefunden, es auf WPF GUI zu funktionieren, wenn von der zugrunde liegenden CS-Datei aufgerufen.

+0

Danke für die Antwort. In diesem Fall bin ich mit der WPF-zentrischen Lösung gegangen. – MrGreggles

Verwandte Themen