WPF TextBlock NoWrap показывает две строки вместо одной

У меня проблема с запуском внутри TextBlock

Когда я создаю TextBlock без такой упаковки:

<Window x:Class="Test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" x:Name="_window">
    <Grid>
    <TextBlock TextWrapping="NoWrap" Width="100">
      <Run Text="{Binding Value, ElementName=_window}"/>
      </TextBlock>
  </Grid>
</Window>

И присвойте Value очень длинную строку, например new string('-', (int) 1e6), она показывает две строки вместо одной.

Что мне делать, чтобы предотвратить это и получить ровно одну строку?

P.S. Я не могу использовать TextBlock без Run


person PG_LoLo    schedule 03.09.2014    source источник


Ответы (1)


Вместо этого используйте текст.

<TextBlock TextWrapping="NoWrap" Width="100" Text="{Binding Value, ElementName=_window}"/>

Также вы можете использовать TextBlock как встроенный

<TextBlock Width="100">
    <Span FontSize="50">
        <TextBlock TextWrapping="NoWrap" Text="{Binding Value, ElementName=_window}"/>
    </Span>
    <Span FontSize="20">
        <TextBlock TextWrapping="NoWrap" Text="{Binding Value, ElementName=_window}"/>
    </Span>
</TextBlock>
person Eldar Dordzhiev    schedule 03.09.2014
comment
Нет, я не могу использовать smiple TextBlock, потому что мне нужно выделить текст - person PG_LoLo; 03.09.2014
comment
@PG_LoLo вы можете использовать TextBlock как встроенный вместо Run. Я обновил ответ выше, посмотрите. - person Eldar Dordzhiev; 03.09.2014
comment
Хорошо, я подумаю над этим трюком, но почему ‹Бежать› работает некорректно? - person PG_LoLo; 03.09.2014
comment
@PG_LoLo Хотел бы я дать вам объяснение :) Похоже, это ошибка, не уверен. - person Eldar Dordzhiev; 03.09.2014