2014-06-10 59 views
2

我創建了一個WPF TextBlock代碼一個Label內(XAML是不可能在我的情況)如下:如何在不使用XAML的情況下將換行符插入到TextBlock中?

Label l = new Label(); 
TextBlock tb = new TextBlock(); 
l.Content = tb; 

然後我來的情況下,我需要設置的TextBlock.Text財產包含新的線,如:各種換行符組合

tb.Text = "Hello\nWould you please just work?"; 

我已經嘗試了許多編碼(HTML編碼,ASCII編碼等)(回車,換行,回車加線飼料,換行加回車,雙換行,雙回車等...廣告nauseum)。

  • 答案應該包含絕對沒有XAML
  • 答案應該假定原始對象是使用C#代碼創建的,並且不是 XAML。
  • 回答應該不是指WPB屬性的綁定。沒有綁定正在使用。 「TextBlock」對象的「Text」屬性爲set。換行必須被插入那裏

如果這是不可能的,請讓我知道我可以以編程方式通過動態替換每個換行符在任意輸入StringLineBreak對象(或任何需要得到這個工作)添加新行。輸入String將具有我無法預先預料的任意(可讀的文本)內容,因爲文本本身是動態的(用戶定義的);源字符串將具有換行字符(aka LF,又名\n),但我可以輕鬆地將其替換爲任何所需的字符。

另外,如果在Label中更容易直接使用Label而不是TextBlock,那也可以 - 我可以使用它。我只需要一個帶有自動純文本換行的控件。

+0

可能重複的[帶有換行符的程序化文本塊輸入](http://stackoverflow.com/questions/15582398/programmatic-textblock-entry-with-linebreaks),實際上第二個答案有可能是你的尋找。 – GEEF

回答

11

您有幾種選擇:

使用Environment.NewLine屬性:

TextBlock tb = new TextBlock(); 
tb.Text = "Hello" + Environment.NewLine + "Would you please just work?"; 

或者,手動添加Run S和LineBreak S到TextBlock

TextBlock tb = new TextBlock(); 
tb.Inlines.Add(new Run("Hello")); 
tb.Inlines.Add(new LineBreak()); 
tb.Inlines.Add(new Run("Would you please just work?")); 
1

又一個小紙條。我有一個類似的問題,並從資源文件中獲取字符串。我注意到.NET將字符串「\ r \ n」表示爲「\\ r \\ n」。當我通過用正常反斜槓替換雙反斜槓來糾正這種情況時,所有工作都按預期工作。

相關問題