2011-01-25 13 views
21

Ho difficoltà a far corrispondere i caratteri speciali impostati in Silverlight. Ho solo su quanto segue:Come rappresentare un'interruzione di riga o una nuova riga in Silverlight textBox

per rappresentare un'interruzione di riga in Silverlight TextBlock:

uso: > lineBreak <

Ma cosa posso usare per rappresentare una nuova linea o di interruzione di riga in Silverlight TextBox ??

Esempio: voglio questa riga mag: Questa è la prima riga. Questa è la riga due

in questo:

Questa è la riga uno. Questa è la seconda linea.

sembra che questo \ r \ n non funzioni. Questa è la riga uno \ r \ n

risposta

48

La linea inferiore in alto

<TextBox Text="This is line one!&#13;This is line two!" /> 

Linebreak Stranezze nel controllo TextBox Silverlight

Se si intende inizializzare il contenuto di un TextBox con testo letterale in Xaml in modo simile a un TextBlock, è necessario un modo affidabile per rappresentare il carattere di interruzione di riga utilizzato da Silverlight in Xaml.

Silveright utilizza un carattere CR (0x0D - ASCII 13) per rappresentare una interruzione di riga che in C# viene inclusa in una stringa letterale come \ r. Tuttavia Xaml non è C# quindi non puoi usare \ r in Xaml.

Xaml è fondamentalmente XML ma con alcune stranezze di Xaml. Includendo semplicemente un'interruzione di riga, come Derek ha nella sua risposta, direttamente in Xaml non funzionerà in fase di esecuzione (anche se il progettista lo visualizza come previsto). Si potrebbe pensare che ciò perché Xml utilizza il carattere LF (0x0A) come carattere di interruzione di riga. Tuttavia nel codice è possibile assegnare una stringa contenente "\ r" o "\ n" alla proprietà Text e il TextBox mostrerà una nuova riga. Infatti puoi assegnare la sequenza "\ r \ n" e mostrerà una singola nuova riga (non due nuove righe).

In definitiva, è possibile utilizzare l'entità del codice carattere Xml per rappresentare un \ r in Xaml "&#13;" che sopravvive al processo di analisi Xaml per motivi che non riesco a spiegare in realtà.

+0

Grazie per la risposta – MilkBottle

+0

+1 per 'anche se il progettista lo visualizza come previsto'. Mi ha fatto capire che Designer potrebbe non visualizzare 'newline' con ' ', ma a runtime textblock sarebbe;) –

+0

Funziona bene anche in WP8.1! – noob

2

Se si desidera visualizzare una stringa con un ritorno a capo in esso, basta usare una stringa con un ritorno a capo in esso:

MyTextBlock.Text = @"line 1 
line2"; 
+0

Il problema con questo approccio è che include la sequenza \ r \ n per rappresentare una nuova linea. Questo è incoerente con l'uso di TextBox di semplicemente \ r per la nuova riga e quindi creare mal di testa in seguito. Ad esempio, una semplice sostituzione di tutti \ r in \ n per utilizzare il risultato dove \ n è il linebreak causerà il raddoppiamento di alcuni linebreak (quelli inclusi nel contenuto iniziale). – AnthonyWJones

10

Per aggiungere un'interruzione di linea per la proprietà di un TextBox in XAML Text, utilizzare il codice di carattere ASCII per un avanzamento, come mostrato nel seguente esempio:

<TextBox x:Name="_test" Height="150" Text="This is line one.
This is line two." /> 

per aggiungere un'interruzione di linea per la Text proprietà di un TextBox nel code-behind, utilizzare il Environment.NewLine valore statico (che è lo stesso come \r\n) come mostrato nel seguente esempio di codice:

this._test.Text = string.Format(
    "This is line one.{0}This is line two.", 
    Environment.NewLine);
+1

soluzione più pulita! Il poster –

18

In XAML è possibile utilizzare semplicemente l'interruzione di riga:

<TextBlock Name="textBlock1" >line 1 <LineBreak /> line 2</TextBlock> 
+1

richiede un TextBox, non un TextBlock. – RobSiklos

+1

Il titolo riguarda un "TextBox", ma se si guarda nel suo post: "... Per rappresentare un LineBreak in Silverlight TextBlock: ..." – danbord

+1

@danbord: Penso che sia necessario leggere la domanda con più attenzione. – AnthonyWJones

2

Grazie a tutti.

Sta funzionando. Per Silverlight TextBlock: utilizzare <lineBreak/> nel XAML di textBlock.

Grazie a AnthonyWJones per Silverlight textBox, io uso "\ r" nella stringa che viene utilizzato per visualizzare in TextBox.

1

Per un'interruzione di linea in un uso di Windows Phone Silverlight TextBlock: "Questa è la riga uno"

& vbCrLf & "Questa è la seconda linea!"

+0

Bello, facile e funziona anche in un normale progetto WPF vb.net –

0
<TextBox x:Name="textBox" AcceptsReturn="True" /> 
Problemi correlati