我正在使用MVVM模式,我的ModelView中有字符串类型属性。
该字符串可能包含以下HTML标记:
<b>, </b>, <i>, </i>
我需要在TextBlock中将文本的某些部分设置为普通,粗体或斜体。
现在我已经创建了一个解决方法,一个像这样工作的辅助方法:
将HTML字符串分解为部分
创建Run class
根据标记,设置FontWeight或FontStyle属性
将Run类的实例添加到TextBlock的Inlines集合
此解决方案有效,但与MVVM模式不兼容。
我在考虑使用转换器,但我不确定应该绑定哪个TextBlock属性。
您怎么看,这个问题怎么解决?
答案 0 :(得分:4)
我过去做过的事情是使用ContentControl,Content属性绑定到字符串,ValueConverter返回动态创建的TextBlock。其他解决方案可在此处找到,包括this one。
答案 1 :(得分:1)
我找到的最简单的解决方案。
是否使用BindableRichTextBox,可以在http://www.shawnduggan.com/?p=54
找到使用转换器将HTML字符串转换为XAML,然后将其转换为FlowDocument对象
将文档绑定到BindableRichTextBox
使RichTextBox看起来像TextBlock(Focusable =“False”,BorderThinkness =“0”,BorderBrush =“White”....等)