Применение цвета фона ко всей строке текста - PullRequest
1 голос
/ 27 сентября 2011

У меня есть RichTextBox в приложении WPF.Я хотел бы применить альтернативную окраску для каждой строки текста.Я установил свойство Background для желаемого цвета, но из-за различий в длине текста, только часть, содержащая текст, получает цвет фона.Как установить свойства таким образом, чтобы для всей строки был задан желаемый цвет фона.

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

Есть ли лучший подход?

Ответы [ 3 ]

0 голосов
/ 27 сентября 2011

Попробуйте использовать List, который выделяет строки линий цветом фона. Обновите коллекцию ListItem (в соответствии с количеством строк в тексте), когда кто-либо изменит текст в событии RichTextBox.TextChanged.

    <RichTextBox>
        <RichTextBox.Document>
            <FlowDocument>
                <List>
                    <ListItem Background="Red" />
                    <ListItem Background="Green"/>
                    <ListItem Background="Yellow"/>
                </List>
            </FlowDocument>
        </RichTextBox.Document>
    </RichTextBox>

Я думаю, вы можете изменить маркированный внешний вид списка, переопределив его стиль.

0 голосов
/ 20 октября 2011

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

0 голосов
/ 27 сентября 2011

Если все линии имеют одинаковую высоту, вы можете применить фоновую графику к самому RichTextBox, что будет иметь тот же эффект (при необходимости установите размеры / цвета):

<RichTexBox>
    <RichTexBox.Background>
            <VisualBrush TileMode="Tile" Viewport="0 0 100 100" ViewportUnits="Absolute">
                <VisualBrush.Visual>
                    <StackPanel>
                       <Rectangle Width="100" Height="50" Fill="Red" />
                       <Rectangle Width="100" Height="50" Fill="Blue" />
                    </StackPanel>
                </VisualBrush.Visual>
            </VisualBrush>
    </RichTexBox.Background>
</RichTexBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...