TextBlock с кратным интервалом <Run> - PullRequest
33 голосов
/ 15 ноября 2011

С учетом блока форматированного текста в проекте 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)?

Ответы [ 2 ]

56 голосов
/ 15 ноября 2011

если вы напишите все свои 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>

enter image description here

9 голосов
/ 03 июля 2015

Чтобы выстроить ответ Джастина XL, важно, чтобы между тегами run не было пробелов, но пробелы в самих тегах не имеют значения ...

Таким образом, вы можете проявить творческий подход, чтобы разместить прогоны на отдельных строках, но не добавлять пробелы к результату:

<!-- 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>
...