我正在努力匹配Silverlight中的特殊字符集。我只知道以下内容:
要在Silverlight TextBlock中表示LineBreak:
使用:> lineBreak <
但是,我该如何在Silverlight TextBox中表示换行或LineBreak?
例如:我希望这一行变成两行:
This is line one. This is line two.
似乎这个\r\n不起作用。这是第一行\r\n
我正在努力匹配Silverlight中的特殊字符集。我只知道以下内容:
要在Silverlight TextBlock中表示LineBreak:
使用:> lineBreak <
但是,我该如何在Silverlight TextBox中表示换行或LineBreak?
例如:我希望这一行变成两行:
This is line one. This is line two.
似乎这个\r\n不起作用。这是第一行\r\n
底线在顶部
<TextBox Text="This is line one! This is line two!" />
在 Silverlight TextBox 中的换行问题
如果你想要在 Xaml 中像初始化 TextBlock 一样使用字面文本来初始化一个 TextBox,那么你需要一种可靠的方式来代表 Silverlight 在 Xaml 中使用的换行符。
Silverlight 使用 CR 字符(0x0D - ASCII 13)来表示换行,你可以在 C# 的字符串文本中使用 \r 来包含它。但是 Xaml 不是 C#,所以不能在 Xaml 中使用 \r。
Xaml 本质上是 XML,但有一些奇怪的 Xaml 解析规则。直接在 Xaml 中包含换行符不会在运行时起作用(尽管设计器会按预期显示)。你可能会认为这是因为 Xml 使用 LF 字符(0x0A)作为其换行符。但是在代码中,你可以将包含“\r”或“\n”的字符串分配给 Text
属性,TextBox 将显示一个新行。实际上,你可以分配序列“\r\n”,它将显示单个新行(而不是两个新行)。
最终,你可以使用 Xml 字符代码实体来在 Xaml 中代表 \r " "
,这个实体可以在 Xaml 解析过程中正常工作,我无法解释其中的原因。
<TextBlock Name="textBlock1" >line 1 <LineBreak /> line 2</TextBlock>
要在XAML中将一个换行添加到TextBox
的Text
属性中,可以使用ASCII字符代码来表示换行符,如下例所示:
<TextBox x:Name="_test" Height="150" Text="This is line one.
This is line two." />
要在代码后端添加一个文本框的Text
属性中的换行符,可以使用Environment.NewLine
静态值(与\r\n
相同),如以下代码示例所示:
this._test.Text = string.Format(
"This is line one.{0}This is line two.",
Environment.NewLine);
如果你想展示一个带有回车符的字符串,只需使用带有回车符的字符串:
MyTextBlock.Text = @"line 1
line2";
谢谢大家。
它正在工作。
对于Silverlight的TextBlock
:在textBlock
的XAML中使用<lineBreak/>
。
感谢AnthonyWJones
对于Silverlight的textBox
,我在用于在TextBox
中显示的字符串中使用"\r"。
在 Windows Phone Silverlight TextBlock 中换行,请使用:
"这是第一行!" & vbCrLf & "这是第二行!"
<TextBox x:Name="textBox" AcceptsReturn="True" />
显示“换行符”,但在运行时,文本块会显示。 - Shishir Gupta