2010-07-04 41 views
1

我需要繪製一行文本,並在WPF中爲部分字符串(即突出顯示)設置不同的背景。 FomattedText類允許爲字符串的不同部分設置各種屬性,如粗體,下劃線等顏色等,但不具有背景顏色。我認爲使用TextFormatter和編寫一個自定義的TextSource將完成這項工作,但它看起來像一個相當重的做法很簡單的方法。還有另一種方法可以做到嗎?WPF - 用不同背景顏色繪製文本行

回答

2

您可以通過使用帶有多個Inline兒童的基本TextBlock併爲他們提供單獨的背景顏色來實現此目的。這裏是XAML一個簡單的例子:

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

需要注意的是,沒有模板ContentPresenter會自動換行內聯對象在一個TextBlock,所以你可以綁定一個ContentControl中的跨度的內容屬性。有關數據綁定到Inline的建議,請參見this StackOverflow question

如果您希望文本可由用戶編輯,那麼您應該查看RichTextBox