WPF 中动态 TextBlock 内容的选择性着色
对于静态内容的选择性着色,以下建议效果很好: 是否可以选择性地为包装材料着色Silverlight/WPF 中的 TextBlock
但是我的内容将在运行时生成。 对于前。如果生成的内容是:“A Quick Brown Fox” 然后我需要它们将“Brown”串为棕色,将“Fox”串为红色。
关键字颜色列表是固定的,并且在运行时可供我使用。
我已经查看了 MSDN 上的 Advanced TextFormatting 页面,但它对我来说太复杂了,而且其中的示例也无法编译:(
我正在考虑创建一个可以为我执行此操作的自定义控件。如果有人有,请告诉我关于如何进行此操作的任何想法,
请提前致谢。
For selective coloring of static content the following suggestion works fine :
Is it possible to seletively color a wrapping TextBlock in Silverlight/WPF
However my content will be generated at runtime.
For ex. if the Content generated is : "A Quick Brown Fox"
Then I need they string "Brown" to be in color Brown and "Fox" to be in color Red
The Keyword-Color list is fixed and available to me at runtime.
I have looked at the Advanced TextFormatting page on MSDN, but it is too complicated for me, also the sample in there does not compile :(
I am looking at creating a custom control which can do this for me. Let me know if anyone has any idea regarding how to go about this.
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这个想法在您的链接中进行了解释:在自定义控件中拥有文本的属性。然后扫描文本中的单词,并创建适当的运行。最后,将它们全部分配给 TextBox inlines 集合。
在这个例子中,我简单地使用了 string.Split()。如果单词被其他标点符号分割,您可能会漏掉单词。
The idea is explained in your link: Have a property for the text in the custom control. Then scan the text for the words, and create appropriate Runs. In the end, assign them all to the TextBox inlines collection.
In this example I simply used string.Split(). You might miss words if they are split by other punctuation.