将背景颜色应用于整行文本

时间:2011-09-27 07:17:12

标签: c# wpf richtextbox background-color

我在WPF应用程序中有一个RichTextBox。我想对每行文本应用替代着色。我已将Background属性设置为所需的颜色,但由于文本长度不同,只有包含文本的部分才会获得背景颜色。如何设置属性,以便将整行设置为所需的背景颜色。

一个非优雅的解决方案是填充一些空格,但如果RichTextBox布局发生变化,则需要通过反复试验来更改代码。

有更好的方法吗?

3 个答案:

答案 0 :(得分:0)

如果所有线条的高度相同,那么您可以将背景图形应用于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>

答案 1 :(得分:0)

尝试使用List突出显示背景颜色的行数。当有人更改ListItem事件中的文字时,刷新RichTextBox.TextChanged集合(根据文本中的行数)。

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

我认为您可以通过覆盖其样式来更改列表的项目符号外观。

答案 2 :(得分:0)

我想知道如何使用动态生成的项目来完成此工作。对于我的实际情况,我使用了额外的空格。现在,这是我的方式。