WPF - 绘制具有不同背景颜色的文本行

时间:2010-07-04 12:38:44

标签: .net wpf .net-3.5 wpf-controls

我需要绘制一行文本,其中包含WPF中部分字符串(即高亮显示)的不同背景。 FomattedText类允许您为字符串的不同部分设置各种属性,如粗体,下划线前颜色等,但没有背景颜色。我认为使用TextFormatter并编写一个自定义TextSource可以完成这项工作,但它似乎是一种非常重要的做事非常简单的方法。还有其他办法吗?

1 个答案:

答案 0 :(得分:2)

您可以通过使用具有多个内联子项的基本TextBlock并为它们提供单独的背景颜色来执行此操作。这是XAML中的一个简单示例:

<TextBlock>
    <Run Background="Blue">Foo</Run>
    <Run Background="Red">Bar</Run>
</TextBlock>

请注意,没有模板的ContentPresenter会自动将Inline对象包装在TextBlock中,因此您只需将ContentControl的Content属性绑定到Span即可。有关数据绑定到Inlines的建议,请参阅this StackOverflow question

如果您希望用户可以编辑文本,那么您应该查看RichTextBox