【发布时间】:2011-03-11 14:54:21
【问题描述】:
我需要为 WPF 中的部分字符串(即高亮)绘制一行具有不同背景的文本。 FomattedText 类允许您为字符串的不同部分设置各种属性,如粗体、下划线前景色等,但没有背景色。我认为使用 TextFormatter 并编写自定义 TextSource 就可以完成这项工作,但它似乎是一种相当重量级的方式来做一些非常简单的事情。还有其他方法吗?
【问题讨论】:
标签: .net wpf .net-3.5 wpf-controls
我需要为 WPF 中的部分字符串(即高亮)绘制一行具有不同背景的文本。 FomattedText 类允许您为字符串的不同部分设置各种属性,如粗体、下划线前景色等,但没有背景色。我认为使用 TextFormatter 并编写自定义 TextSource 就可以完成这项工作,但它似乎是一种相当重量级的方式来做一些非常简单的事情。还有其他方法吗?
【问题讨论】:
标签: .net wpf .net-3.5 wpf-controls
您可以通过使用具有多个 Inline 子级的基本 TextBlock 并为它们分配不同的背景颜色来做到这一点。这是 XAML 中的一个简单示例:
<TextBlock>
<Run Background="Blue">Foo</Run>
<Run Background="Red">Bar</Run>
</TextBlock>
请注意,没有模板的 ContentPresenter 会自动将 Inline 对象包装在 TextBlock 中,因此您只需将 ContentControl 的 Content 属性绑定到 Span。有关将数据绑定到内联的建议,请参阅 this StackOverflow question。
如果您希望用户可以编辑文本,那么您应该查看RichTextBox。
【讨论】: