web-dev-qa-db-ja.com

複数の<Run>間隔の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で望んでいるようには見えません:

blend text block

エミュレーターと実際のデバイスのBlend(よくできたBlendチーム)のように見えます。

ビッグ8と45の前後にこれらのスペースを追加するものは何ですか?

(VSデザイナーのように)レイアウトを強制的に正しく表示するにはどうすればよいですか?

33
Maxim V. Pavlov

すべてのRunsを同じ行に書き込むと、空のスペースがなくなります。基本的に、ここの新しい行は、UIの1つの空のスペースです。

<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

56
Justin XL

ジャスティン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>
9
Josh Stribling