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