具有多个<run>间距</run>的TextBlock

时间:2011-11-15 01:03:05

标签: silverlight xaml layout expression-blend textblock

在Windows Phone 7.1项目中给出格式化文本块:

<StackPanel Orientation="Horizontal">
    <TextBlock Foreground="DarkGray" VerticalAlignment="Bottom" Margin="0,0,0,8">
            <Run Text="total length "/>
            <Run Text="{Binding TotalHours}" FontSize="48"/>
            <Run Text="h "/>
            <Run Text=":" FontSize="48"/>
            <Run Text="{Binding TotalMinutes}" FontSize="48"/>
            <Run Text="m "/>
    </TextBlock>
</StackPanel>

在VS设计器中正确预览:

vs text block

在混合中,它已经不是我想要的方式了:

blend text block

它在模拟器和真实设备中看起来就像Blend(好工作Blend团队)一样。

在8和45之前和之后添加这些空格的是什么?

如何强制我的布局正确显示(如在VS设计器中)?

2 个答案:

答案 0 :(得分:56)

如果你在同一行写下你的所有Runs,那么空白空间就会消失。基本上,这里的新行是UI上的一个空白区域。

<TextBlock Foreground="DarkGray" VerticalAlignment="Bottom" Margin="0,0,0,8"><Run Text="total length "/><Run Text="{Binding TotalHours}" FontSize="48"/><Run Text="h "/><Run Text=":" FontSize="48"/><Run Text="{Binding TotalMinutes}" FontSize="48"/><Run Text="m "/></TextBlock>

enter image description here

答案 1 :(得分:9)

要建立Justin XL的答案,重要的是你不能在运行标签之间有空格,但标签中的空白本身并不重要......

因此,您可以将广告投放分散在不同的行上,但不能在结果中添加空格:

<!-- Formatted to prevent adding spaces between runs -->
<TextBlock Foreground="DarkGray" VerticalAlignment="Bottom" Margin="0,0,0,8"
    ><Run Text="total length "
    /><Run Text="{Binding TotalHours}" FontSize="48"
    /><Run Text="h "
    /><Run Text=":" FontSize="48"
    /><Run Text="{Binding TotalMinutes}" FontSize="48"
    /><Run Text="m "
/></TextBlock>