如何在UWP应用程序中保留TextBlock的空格

Jun*_*ton 6 c# xaml win-universal-app windows-10 uwp

如果您只是将TextBlock中Text属性的值设置为" Example    "(请注意,此字符串末尾有3个空格),TextBlock在UI中显示的只是" 示例 ".

在互联网上搜索解决方案后,我发现有一种方法可以解决这个问题:

<Border BorderThickness="1" 
        BorderBrush="#FFFF0202" 
        HorizontalAlignment="Center" 
        VerticalAlignment="Center">
    <TextBlock x:Name="t1">
        <Run Text="Example&#160;&#160;&#160;"/>
    </TextBlock>
</Border>
Run Code Online (Sandbox Code Playgroud)

上面的代码显示了使用TextBlock的Inline属性,并&#160;在Run的Text中正确显示了空格.

但是,在我的情况下,我需要在Code-behind(或通过DataBinding)中设置TextBlock的Text属性,上面的技巧不起作用,它Example&#160;&#160;&#160;在UI中显示.

我试图通过数据绑定设置Run的Text属性的值,我认为可以正确显示转义字符,但Run的Text属性不是依赖属性,所以我没有更好的方法来解决这个问题.

(但是我认为使用TextBlock的填充属性也是一个技巧,它应该工作.但还有更好的方法吗?)

Jus*_* XL 6

首先,Run.Text 是否支持数据绑定.

&#160;在数据绑定中无法正确打印的原因是因为它使用XML转义字符.

尝试使用(char)160-

public string TestString { get; set; } = "Example" + (char)160 + (char)160 + (char)160;

<TextBlock>
    <Run Text="{x:Bind TestString}" />
</TextBlock>
Run Code Online (Sandbox Code Playgroud)