【问题标题】:Set TextBlock to preserve white space at the beginning and at the end?设置 TextBlock 以在开头和结尾保留空白?
【发布时间】:2011-05-09 07:50:00
【问题描述】:

编辑:

下面的代码实际上可以按我的意愿工作 - 这个问题有点误导。请忽略它。


通常当我像这样设置TextBlockText 属性时:

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

不显示文本开头和结尾的空格。 TextBlock显示的文字只有Hello World。如何设置 TextBlock 来显示它们(即不删除空格)?我错过了一些财产吗?

【问题讨论】:

    标签: c# .net wpf textblock


    【解决方案1】:

    在这种情况下你不需要使用xml:space="preserve"

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

    将显示空格,但是

    <TextBlock>    Hello world!    </TextBlock>
    

    不会。

    【讨论】:

    • 天哪。 xml:space="preserve" 非常方便。有一个 +1
    • 这似乎不适用于扩展TextDecorations,开头的空间在那里并且被装饰,但最后的文本没有被装饰(虽然它仍然存在)。如果你使用non-breaking spaces,它会起作用。
    【解决方案2】:

    Re:“我只是希望您不要使用它来对齐文本。还有许多其他更优雅的方法可以做到这一点。”

    听起来您可能想要使用 Padding 属性: http://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.padding(VS.85).aspx

    另请参阅各种对齐和边距属性。

    【讨论】:

    • 我同意 Rob,但是,我可以看到 xml:space="preserve" 的用处。例如,如果您使用 ViewBox,则很难使用边距或填充,因为字体大小可能会有所不同(因此是空间大小)。
    【解决方案3】:

    设置 xml:space 属性以保留在您的 XAML 中,我假设您正在使用 WPF

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

    编辑:有时在 XAML 中做事更容易。我只是希望你没有使用它来对齐你的文本。还有许多其他更优雅的方法可以做到这一点。

    【讨论】:

    • 对不起,但是-1。由于 XAML,空格不会被删除 - 如果您在代码中设置它,也会发生同样的想法。我特意用代码举例。我猜这是由TextBlock 自己完成的。
    • 很抱歉。你说的对。在代码中它不会修剪它。在您编辑答案之前,我无法取消我的反对票:(因此,如果您关心投票,请稍微编辑您的答案,以便我可以用赞成票代替反对票。
    • 我想看看您是否可以在代码中设置 xml:space="preserve" 或者该属性是否可以设置为运行。
    【解决方案4】:

    您不需要使用 Text= 属性。这也有效:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-15
      • 2010-12-07
      • 2019-05-29
      • 2020-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多