2011-01-25 2 views
21

Мне сложно найти специальные символы, установленные в Silverlight. Я только на следующее:Как представить строку Break или новую строку в silverlight textBox

Для представления LineBreak в Silverlight TextBlock:

использование: > LineBreak <

Но Что я использую, чтобы представить новую линию или LineBreak В Silverlight TextBox ??

Пример: Я хочу, чтобы это однострочное магнитное поле: это линия одна. Это линия два

в этом:

Это строка один. Это вторая строка.

похоже, что этот \ r \ n не работает. Это строка один \ г \ п

ответ

48

в нижней строке в верхней

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

LineBreak Weirdness в TextBox Silverlight

Если вы собираетесь инициализировать содержимое TextBox буквальным текстом в Xaml аналогичным образом, чтобы вы могли использовать TextBlock, вам нужен надежный способ представления символа разрыва строки, который Silverlight использует в Xaml.

Silverlight использует символ CR (0x0D - ASCII 13), чтобы представить строку, которая в C# включается в строковый литерал как \ r. Однако Xaml не является C#, поэтому вы не можете использовать \ r в Xaml.

Xaml - это фундаментальный XML, но с некоторыми хаотичными разборами Xaml. Просто включив строку, как сказал Дерек в своем ответе, прямо в Xaml не будет работать во время выполнения (хотя разработчик отображает его, как ожидалось). Вы можете подумать, что это потому, что Xml использует символ LF (0x0A) как символ линии. Однако в коде вы можете назначить строку, содержащую «\ r» или «\ n», для свойства Text, и TextBox покажет новую строку. Фактически вы можете назначить последовательность «\ r \ n», и она отобразит одну новую строку (не две новые строки).

В конечном итоге вы можете использовать сущность символьного символа Xml для представления символа \ r в Xaml "&#13;", который выживает в процессе разбора Xaml по причине, которую я не могу объяснить.

+0

Спасибо за ответ – MilkBottle

+0

+1 за 'хотя дизайнер отображает его как ожидалось'. Сделал меня понять, что Дизайнер может не отображать 'newline' с ' ', но во время выполнения textblock будет;) –

+0

Хорошо работает и в WP8.1! – noob

2

Если вы хотите отобразить строку с символом возврата каретки в этом, просто использовать строку с символом возврата каретки в нем:

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

Проблема с этим подходом заключается в том, что он включает в себя последовательность \ r \ n для представления новой строки. Это несовместимо с использованием TextBox просто \ r для новой строки и, следовательно, создает головную боль позже. Например, простая замена всех \ r на \ n для использования результата, где \ n - это развязка строк, приведет к удвоению некоторых строк (которые включены в начальный контент). – AnthonyWJones

10

Чтобы добавить разрыв строки Text свойства TextBox в XAML, используйте код ASCII символа для перевода строки, как показано в следующем примере:

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

чтобы добавить разрыв строки в Text свойства TextBox в коде-сзади, используйте Environment.NewLine статическое значение (которое является таким же, как \r\n), как показано в следующем примере кода:

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

чистейшее решение! –

18

В XAML можно просто использовать LineBreak:

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

плакат спрашивает об TextBox, а не в TextBlock. – RobSiklos

+1

Название о «TextBox», но если вы посмотрите в его сообщении: «... Чтобы представить LineBreak в Silverlight TextBlock: ...» – danbord

+1

@danbord: Думаю, вам нужно внимательно прочитать вопрос. – AnthonyWJones

2

Благодарим всех.

Работает. Для Silverlight TextBlock: использовать <lineBreak/> в XAML от textBlock.

Благодаря AnthonyWJones Для Silverlight textBox я использую «\ г» в строке, которая используется для отображения в TextBox.

1

Для разрыва строки в использовании Windows Phone Silverlight TextBlock: "Это строка один"

& vbCrLf & «Это строка вторая!»

+0

Отличный, простой и он работает также в обычном проекте WPF vb.net –

Смежные вопросы