2013-03-23 8 views
6

Come è possibile aggiungere a livello di codice testo con interruzioni di riga a un blocco di testo?Voce di selezione del testo programmatico con interruzioni di riga

se inserisco testo come questo:

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

Poi le interruzioni di riga ottenere interpretato come parte della stringa letterale. Voglio che sia più simile a ciò che accadrebbe se lo avessi in XAML.

io non riesco a farlo nel modo WPF sia:

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

Dato che il metodo Add() vuole accettare oggetti di tipo "in linea".

Non riesco a creare un oggetto in linea e passarlo come parametro perché è "inaccessibile a causa del livello di protezione:

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

Non vedo un modo per aggiungere a livello di codice viene eseguito

.

posso trovare una tonnellata di WPF esempi di questo, ma nulla per WinRT.

ho anche girato un sacco di esempi XAML, ma niente da C#.

risposta

13

Si può solo passare a capo \n invece di <LineBreak/>

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

O in XAML si usa il valore di ritorno a capo Hex

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

Entrambi i risultati:

enter image description here

+0

Mi chiedo se ci sia un vantaggio nel fare \ r \ n invece di \ n. – micahhoover

+0

Ho contrassegnato questa risposta migliore perché è così semplice e probabilmente semplificherà le cose per il caricamento da un file XML. – micahhoover

4

Usa 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

funziona! Te lo darò. +1 – micahhoover

1

È possibile convertire \n in <LineBreak/> in modo programmatico.

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

Soluzione:

userei "\ n" invece di interruzioni di linea. Il modo migliore sarebbe usarlo su questo modo: il file

Resources.resx:

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

in classe vostra:

helpBlock.Text = Resources.myTextline; 

Questa volontà si presenta come:

enter image description here

Altra soluzione w dovresti costruire la tua stringa qui con 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(); 

Oppure utilizzare qui "\ n"

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