如何将TextBlock设置为在开头和结尾保留空格?

24

编辑:

实际上下面的代码已经按照我的需求工作了 - 这个问题有点误导,请忽略它。


通常情况下,当我像这样设置TextBlockText属性:

TextBlock tb = new TextBlock();
tb.Text = "     Hello World ";

文本开头和结尾的空格不会显示。由 TextBlock 显示的文本只有 Hello World 。我该如何设置 TextBlock 以显示它们(即不删除空格)?是否缺少某个属性?

4个回答

57
在这种情况下,您不需要使用xml:space="preserve"
<TextBlock xml:space="preserve" Text="     Hello world!    " />

WILL显示空格,但

<TextBlock>    Hello world!    </TextBlock>

不会。


天啊,xml:space="preserve" 真是很方便。赞一个! - Benjamin
1
这似乎无法扩展TextDecorations,开头的空格已经装饰好了,但是结尾的文本没有被装饰(但仍然存在)。如果使用不间断空格,它将起作用。 - Chris

8

我同意Rob的观点,但我也能看到xml:space="preserve"的用处。例如,如果您正在使用ViewBox,由于字体大小可能会变化(因此空间大小也会变化),因此很难使用margin或padding。 - Sam

5

如果您正在使用WPF,我假设您需要在XAML中设置xml:space属性以保留格式。

<TextBlock xml:space="preserve" Text="     Hello world!    " />

编辑:有时候在XAML中做事情更容易。我只是希望你不要使用这种方法来对齐文本。还有许多更优雅的方法可以实现。


抱歉,-1。由于XAML的原因,空格未被移除 - 如果您在代码中设置它,同样的情况也会发生。我故意用代码给出了例子。我猜这是由TextBlock自己完成的。 - Rasto
1
非常抱歉,你是对的。在代码中它没有修剪它。在你编辑答案之前我无法取消我的负投票 :( 所以如果你关心投票,请稍微编辑一下你的答案,这样我就可以用正投票替换负投票了。 - Rasto
我想知道您是否可以在代码中设置xml:space="preserve",或者该属性是否可以设置为运行。 - Deathstalker

2

您无需使用Text=属性。以下方式同样有效:

<TextBlock xml:space="preserve">Staff Contact Details        <Hyperlink>Click here</Hyperlink></TextBlock>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接