2013-03-23 10 views
6

Làm cách nào để thêm văn bản có ngắt dòng vào một khối văn bản?mục nhập văn bản có lập trình với các ngắt dòng

Nếu tôi chèn văn bản như thế này:

helpBlock.Text = "Here is some text. <LineBreak/> Here is <LineBreak/> some <LineBreak/> more."; 

Sau đó xuống hàng được hiểu là một phần của chuỗi chữ. Tôi muốn nó giống như những gì sẽ xảy ra nếu tôi có nó trong XAML.

tôi dường như không thể làm điều đó một cách WPF hoặc:

helpBlock.Inlines.Add("Here is some content."); 

Kể từ khi phương thức Add() muốn chấp nhận đối tượng thuộc loại "inline".

tôi không thể tạo một đối tượng Inline và vượt qua nó như một tham số vì nó là "không thể tiếp cận do mức độ bảo vệ của nó:

helpBlock.Inlines.Add(new Windows.UI.Xaml.Documents.Inline("More text")); 

Tôi không thấy một cách để lập trình thêm chạy

.

tôi có thể tìm thấy một tấn WPF ví dụ về điều này, nhưng không có gì cho WinRT.

tôi cũng đã bật lên rất nhiều ví dụ về XAML, nhưng không từ C#.

Trả lời

13

Bạn chỉ có thể vượt qua trong newline \n thay vì <LineBreak/>

helpBlock.Text = "Here is some text. \n Here is \n some \n more."; 

Hoặc trong XAML bạn sẽ sử dụng giá trị Hex của newline

<TextBlock Text="Here is some text. &#x0a; Here is &#x0a; some &#x0a; more."/> 

Cả hai kết quả:

enter image description here

+0

Tôi tự hỏi không có lợi thế khi thực hiện \ r \ n thay vì \ n. – micahhoover

+0

Tôi đã đánh dấu câu trả lời này là tốt nhất vì nó đơn giản và có lẽ sẽ đơn giản hóa mọi thứ để tải từ một tệp XML. – micahhoover

4

Sử dụng Env iroment.NewLine

testText.Text = "Testing 123" + Environment.NewLine + "Testing ABC"; 

StringBuilder builder = new StringBuilder(); 
builder.Append(Environment.NewLine); 
builder.Append("Test Text"); 
builder.Append(Environment.NewLine); 
builder.Append("Test 2 Text"); 
testText.Text += builder.ToString(); 
+0

Nó hoạt động! Tôi sẽ đưa bạn cái đó. +1 – micahhoover

1

Bạn có thể chuyển đổi \n thành <LineBreak/> theo chương trình.

string text = "This is a line.\nThis is another line."; 
    IList<string> lines = text.Split(new string[] { @"\n" }, StringSplitOptions.None); 

    TextBlock tb = new TextBlock(); 
    foreach (string line in lines) 
    { 
     tb.Inlines.Add(line); 
     tb.Inlines.Add(new LineBreak()); 
    } 
0

Giải pháp:

Tôi sẽ sử dụng "\ n" thay vì dấu ngắt hàng. cách tốt nhất là sử dụng nó trên theo cách này:

Resources.resx file:

myTextline: "Here is some text. \n Here is \n some \n more." 

Trong bạn Class:

helpBlock.Text = Resources.myTextline; 

Điều này sẽ trông giống như:

enter image description here

Giải pháp khác w có thể xây dựng chuỗi của bạn ở đây với Environment.NewLine.

StringBuilder builder = new StringBuilder(); 
builder.Append(Environment.NewLine); 
builder.Append(Resources.line1); 
builder.Append(Environment.NewLine); 
builder.Append(Resources.line2); 
helpBlock.Text += builder.ToString(); 

Hoặc sử dụng ở đây "\ n"

StringBuilder builder = new StringBuilder(); 
builder.Append("\n"); 
builder.Append(Resources.line1); 
builder.Append("\n"); 
builder.Append(Resources.line2); 
helpBlock.Text += builder.ToString();