正如标题所说,我需要自定义WPF中的部分文本,例如,我有一个短语“快速的棕色狐狸跳过懒狗”,我需要加粗“棕色”这个词,或者更改背景/“fox”的前景色。据我所知,常规WPF控件都不支持该功能,是否有任何开源/免费替代品?
P.S。控件应该是可绑定的
感谢。
答案 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>
<强>输出强>:
此外,如果您使用的是WPF 4.0及更高版本,则 Microsoft已将“{1}”属性设置为“作为依赖项属性运行”而非“正常CLR属性”。所以,你也可以绑定它。
请参阅here了解Bindable Run。
答案 2 :(得分:0)
您可以使用HTML
自定义文字..您可以获得一组HTML代码here ...