Как изобразить разрыв строки или новую строку в текстовом поле Silverlight - PullRequest
21 голосов
/ 25 января 2011

У меня проблемы с подбором специальных символов, установленных в Silverlight.Я только о следующем:

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

use:> lineBreak <</p>

Но что я использую для представления новой линии или LineBreakSilverlight TextBox ??

Пример: я хочу одну строку mag: это первая строка.Это вторая строка

в этом:

Это первая строка.Это вторая строка.

кажется, что \ r \ n не работает.Это первая строка \ r \ n

Ответы [ 7 ]

48 голосов
/ 25 января 2011

Нижняя строка вверху

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

Странность разрыва строки в текстовом поле Silverlight

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

Silveright использует символ 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 по причине, которую я на самом деле не могу объяснить.

18 голосов
/ 25 января 2011

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

<TextBlock Name="textBlock1" >line 1 <LineBreak /> line 2</TextBlock>
10 голосов
/ 25 января 2011

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

<TextBox x:Name="_test" Height="150" Text="This is line one.&#13;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);
2 голосов
/ 26 января 2011

Спасибо всем.

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

. Спасибо AnthonyWJones Для Silverlight textBox я использую "\ r" в строке, используемой для отображения в TextBox.

2 голосов
/ 25 января 2011

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

MyTextBlock.Text = @"line 1
line2";
1 голос
/ 31 января 2012

Для разрыва строки в текстовом блоке Windows Phone Silverlight используйте:

"Это первая строка!" & vbCrLf & "Это вторая строка!"

0 голосов
/ 24 марта 2015
<TextBox x:Name="textBox" AcceptsReturn="True" />
...