WPF TextBlock动态粗体和斜体部分

Dan*_*rik 5 wpf binding mvvm

我正在使用MVVM模式,我的ModelView中有字符串类型属性.

该字符串可能包含以下HTML标记:

<b>, </b>, <i>, </i>  
Run Code Online (Sandbox Code Playgroud)

我需要在TextBlock中将文本的某些部分设置为普通,粗体或斜体.

目前我已经创建了一个解决方法,一个帮助方法,其工作方式如下:

  1. 将HTML字符串分解为多个部分

  2. 创建Run类的实例

  3. 根据标记,设置FontWeight或FontStyle属性

  4. 将Run类的实例添加到TextBlock的Inlines集合中

此解决方案有效,但与MVVM模式不兼容.

我在考虑使用Convertors,但我不确定应该绑定哪个TextBlock属性.

您怎么看?这个问题怎么解决?

Dan*_*rik 1

我为这个问题找到的最简单的解决方案。

就是使用BindableRichTextBox,可以在http://www.shawnduggan.com/?p=54找到

  1. 使用转换器将 HTML 字符串转换为 XAML,然后将其放入 FlowDocument 对象

  2. 将文档绑定到 BindableRichTextBox

  3. 使 RichTextBox 看起来像 TextBlock(Focusable="False"、BorderThinkness="0"、BorderBrush="White"...等)