5

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

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

<b>, </b>, <i>, </i>  

我需要将 TextBlock 中的某些文本部分设为正常、粗体或斜体。

目前我已经创建了解决方法,一个像这样工作的辅助方法:

  1. 将 HTML 字符串分成几部分

  2. 创建 Run 类的实例

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

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

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

我正在考虑使用转换器,但我不确定我应该绑定到 TextBlock 的哪个属性。

你怎么看,这个问题怎么解决?

4

2 回答 2

4

我过去做过的事情是使用 ContentControl,将 Content 属性绑定到带有返回动态创建的 TextBlock 的 ValueConverter 的字符串。其他解决方案可以在这里找到,包括这个

于 2009-03-31T17:43:07.040 回答
1

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

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

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

  2. 将文档绑定到 BindableRichTextBox

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

于 2009-04-02T15:15:06.087 回答