WPF动态格式化文本块中的文本

时间:2014-08-04 09:56:29

标签: c# wpf richtextbox textblock

我觉得我要重新发明轮子所以我想知道WPF是否对我正在努力实现的目标提供了支持。我正在构建一个应用程序,允许人们在文本框中输入一些文本,然后在文本块中看到它的格式。

我希望用户能够通过输入诸如

之类的内容来自己格式化文本
This [BusinessSpecificStyle] is [/BusinessSpecificStyle] a sample text

我的目的是通过简单地更改BusinessSpecificStyle中的底层规则,轻松更改所有文档的显示。但是我不知道用WPF实现它的最佳方法是什么。我正在考虑使用BBCode解析器like this one,但假设我这样做,我看不出我将如何以编程方式将生成的XAML转换为TextBlock子项,我很想知道是否有一些那种内心的支持。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

IValueConverter正是您要找的。

根据从XAML 传递的绑定创建转换器并 格式化文本。 您可以通过网络获取多个样本以创建IValueConverter。请参阅herehere链接,开始使用。

答案 1 :(得分:0)

不确定您是否在这里要求转换器。对我而言,它表明你想根据一些背景和常见的风格来控制文本块的样式?

如果是这种情况,您需要设置文本块的内联以将文本分隔为run元素,这可以引用特定的样式资源。

<TextBlock>
  <TextBlock.Inlines>
     <Run>This</Run>
     <Run Foreground="{StaticResource BusinessSpecificStyleForeground}">is</Run>
     <Run>a sample text</Run>
...

在这种情况下,您可以创建一个资源来定义运行的绑定样式,或者将Style整合到其中。

如果我正在编写一个新问题,我会道歉,我发现你已经标记了一个答案,但我想加上这个以防万一。