如何摆脱TextBlock中运行之间的空白?

kat*_*tit 57 wpf xaml

我有以下XAML:

<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center"
                                               FontSize="10" FontFamily="Arial" Foreground="#414141">        
                                            <Run Text="{Binding LoadsCount}" />        
                                            <Run Text="+" />        
                                            <Run Text="{Binding BrokerLoadsCount}" />
                                        </TextBlock>
Run Code Online (Sandbox Code Playgroud)

我得到这样的显示:12 + 11 不知何故,它在每个之间插入额外的空间Run 如何让它显示12+11

Kev*_*lia 126

运行标记之间的空格会导致空格,这是最简单的修复.

<TextBlock 
   HorizontalAlignment="Center" 
   VerticalAlignment="Center"
   FontSize="10" 
   FontFamily="Arial" 
   Foreground="#414141">        
      <Run Text="{Binding LoadsCount}" /><Run Text="+" /><Run Text="{Binding BrokerLoadsCount}" />
</TextBlock>
Run Code Online (Sandbox Code Playgroud)

因为<TextBlock>和之间的任何内容</TextBlock>都是以TextBlock的text属性为目标,因此运行之间的间隔中的空格会导致您看到的效果.你也可以缩短它.

<Run Text="{Binding LoadsCount}" />+<Run Text="{Binding BrokerLoadsCount}" />
Run Code Online (Sandbox Code Playgroud)

这篇MSDN文章提供了有关xaml如何处理空白的所有细节

http://msdn.microsoft.com/en-us/library/ms788746.aspx

如果你很好奇为什么休息和大量标签转换成一个空格

所有空白字符(空格,换行符,制表符)都转换为空格.

删除所有连续空格并替换为一个空格

  • 此解决方案的问题是,一旦应用格式化程序(如 XAML Styler),一切都会回到原来的问题。因此,在包含数百行的大型 XAML 文件中,您必须确保返回并删除每种格式后的所有换行符。 (3认同)

hel*_*lva 22

另一种选择是在Run标签之间注释空格,保持代码可读并删除额外空间.

<TextBlock HorizontalAlignment="Center"
           VerticalAlignment="Center"
           FontSize="10" FontFamily="Arial" Foreground="#414141">        
    <Run Text="{Binding LoadsCount}" /><!--
 --><Run Text="+" /><!--
 --><Run Text="{Binding BrokerLoadsCount}" />
</TextBlock>
Run Code Online (Sandbox Code Playgroud)


Gle*_*den 18

Kevin的一个很好的解决方案的一个问题XAML是当你应用一些XAML/XML自动重新格式化功能时,标签的单行格式化被撤消,例如"ctrl-K + ctrl-D".我找到的一个解决方法是格式化Run标记,如下所示:

<TextBlock>
    <Run FontStyle="Italic"
    Text="aaa" /><Run 
    Text="bbb" />
</TextBlock>
Run Code Online (Sandbox Code Playgroud)

虽然在这样的行之间拆分标签有点尴尬,但是如果您Visual Studio为XAML文本编辑器选择"保留属性之间的新行和空格"选项,则自动重新格式化不会更改此格式:

在XAML中连续的Run元素之间消除了额外的空间