什么是在WPF中自定义绑定文本的最佳方法

时间:2014-02-04 12:06:50

标签: wpf controls

正如标题所说,我需要自定义WPF中的部分文本,例如,我有一个短语“快速的棕色狐狸跳过懒狗”,我需要加粗“棕色”这个词,或者更改背景/“fox”的前景色。据我所知,常规WPF控件都不支持该功能,是否有任何开源/免费替代品?

P.S。控件应该是可绑定的

感谢。

3 个答案:

答案 0 :(得分:1)

我非常依赖您想要完成的任务,但您可以按照建议的here使用WPF Toolkit的RichTextBox。

或者您可以按照建议的here将绑定功能添加到.Net RichTextBox。

但是,如果您不需要像RichTextBox那么复杂的任何东西。您可以使用ValueConverter并将要显示的文本更改为更符合您需求的文本。 像这样example

同样依赖于你需要的东西,你可以创建一个具有依赖属性“Text”的用户控件,并且在PropertyChanged上,你将文本分成更小的部分,并将它们绑定在不同的“子属性”中将在用户控件中显示在不同的TextBlocks(具有不同的样式)中。

更新(添加了评论中的建议)

如果RichTextBox不是解决方案,也不是UserControl,您可以使用ValueConverter通过TextBlock.Inline完成此操作,如here

答案 1 :(得分:1)

您可以使用Run来装饰文字。

    <TextBlock>
        <Run>The quick </Run>
        <Run FontWeight="Bold" Background="Yellow">brown</Run>
        <Run Foreground="Red"> fox </Run>
        <Run>jumps over the lazy dog.</Run>
    </TextBlock>

<强>输出

enter image description here

此外,如果您使用的是WPF 4.0及更高版本,则 Microsoft已将“{1}”属性设置为“作为依赖项属性运行”而非“正常CLR属性”。所以,你也可以绑定它。

请参阅here了解Bindable Run。

答案 2 :(得分:0)

您可以使用HTML自定义文字..您可以获得一组HTML代码here ...