TextBlock внутреннее поле - PullRequest
       4

TextBlock внутреннее поле

1 голос
/ 14 февраля 2012

Полагаю, когда несколько текстовых блоков расположены в строке (т.е. в StackPanel с горизонтальной ориентацией), они должны выглядеть так, как если бы это был один текстовый блок.Но я обнаружил следующее:

enter image description here

Первая строка - это TextBlock, отображающий «eeee».Второй - это StackPanel, содержащий 4 текстовых блока, а каждый текстовый блок содержит «е».Как видно из рисунка выше, вторая строка немного длиннее первой.Похоже, что TextBlocks имеют некоторое внутреннее поле.Но в моем случае я бы хотел это предотвратить.Итак, вы знаете, как это сделать?

1 Ответ

1 голос
/ 14 февраля 2012

Попробуйте установить Padding и Margin TextBlock на ноль.

<TextBlock Padding="0" Margin="0" ... />

Поскольку у вас есть несколько текстовых блоков, с которыми вы захотите это сделать, вы должны вероятно использоватьStyle для этого.

<StackPanel Orientation="Horizontal">
    <Style TargetType="TextBlock">
        <Setter Property="Padding" Value="0" />
        <Setter Property="Margin" Value="0" />
    </Style>

    ...
</StackPanel>

Если это не поможет, вы можете начать использовать отрицательные поля:

Margin="-1,0,0,0"

Однако это вносит хрупкость в ваш код, потому чторасстояние между текстом зависит от размера шрифта и отображаемого текста.Например, если вы измените размер шрифта на 13, у вас больше не будет этой проблемы с пятью строчными буквами 'e'.Изменение текста на верхний регистр 'E' приведет к той же самой проблеме, однако.

Вы можете попробовать использовать свойства обрезки на TextBlock или даже эффекты рендеринга, но это похоже на большую работу, просточтобы получить текст, чтобы настроить пару пикселей.Могу я спросить, почему вы пытаетесь заставить два образца текста выглядеть одинаково?

Обновление: Я сомневаюсь, что вы можете найти хороший способ заставить эту работу работать так, как выхочу.Возможно, вам стоит использовать RichTextBox или создать собственный элемент управления.

Здесь - хороший пример использования RichTextBox с подсветкой текста (хотя это подсветка переднего плана).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...