2009-10-13 19 views
7

Mam trochę tekstu, który ma "\ r \ n" znaczniki nowej linii. Chciałbym mieć nowe linie w bloku tekstowym WPF. Próbowałem zastąpić "\ r \ n" "& # 13;" (bez spacji), które działało, gdy ustawiłem właściwość Text w XAML, ale wydaje się, że nie działa przy ustawianiu kodu C# z tyłu.Jaki jest najlepszy sposób na uzyskanie akapitów w bloku tekstowym WPF? (znaki nowej linii?)

A więc ... jaki jest standardowy sposób konwersji "\ r \ n" na nowe linie w bloku tekstowym WPF?

Thx z góry!

[Edytuj] Po otrzymaniu tutaj odpowiedzi, w ten sposób przypisuję tekst z "\ r \ n" nowymi wierszami do bloku tekstu WPF. Działa dobrze, ale jeśli chodzi o kodowanie, czy ktoś może potwierdzić, że jest to rozsądny sposób, aby przejść?

 // 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]

Odpowiedz

25

Wypróbuj te rozwiązania, aby uzyskać bardziej centralne rozwiązanie WPF.

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

Zobacz także: XAML based Answer

+0

Dzięki! To na miejscu i sposób, w jaki zdecydowałem się pójść. – MrGreggles

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

ja wyraźnie czegoś brakuje, lol: http://screencast.com/t/tKjtFMk8Jv – MrGreggles

+0

Może nie działać z SL? W każdym razie błędnie przeczytałem twoje pytanie - zobacz moją zaktualizowaną odpowiedź. Działa z WPF - nie wiem na temat SL. –

+0

Thx za twoje odpowiedzi. Wybrałam odpowiedź Asha, będąc zorientowaną na WPF i wydaje mi się, że to najlepsza droga. – MrGreggles

0

Pisząc C# Zawsze używam "System.Environment.Newline" dla powrotu karetki nowej linii.

Oznacza to, że nie musisz się martwić o kodowanie znaków lub system docelowy.

Znalazłem go również do pracy z GUI WPF po wywołaniu z pliku .cs.

+0

Dzięki za odpowiedź. W tym przypadku skorzystałem z rozwiązania zorientowanego na WPF. – MrGreggles