将html转换为FlowDocument

问题描述

我尝试创建一个wpf核心应用程序,该应用程序使用从ms Access数据库导入的文本。 其中一些字段是“访问文本”字段,其文本设置为RTF文本,但实际上它们看起来像html。像这样:

10630981 bla bla bla bla bla bla {bla 25-09}

我当时正在考虑使用FlowDocumentScrollViewer来显示此字段,并使用RichTextBox进行编辑。 因为我想以MVVM模式工作,所以我需要一个转换器将此'Html'转换为flowdocument并返回。

我已经连续几天没有玩这个游戏,但是还没有成功。 我觉得我正在使用以下代码

FlowDocument document = new FlowDocument();
string xaml = "<p> The <b> Markup </b> that is to be converted.</p>";
using (MemoryStream msDocument = new MemoryStream((new ASCIIEncoding()).GetBytes(xaml)))
{
   TextRange textRange = new TextRange(document.ContentStart,document.ContentEnd);
   textRange.Load(msDocument,DataFormats.Xaml);
}

但是我仍然收到一个异常,提示XamlParseException:无法创建未知类型'p'。

有人可以向我推动正确的方向吗?

解决方法

您使用了错误的数据格式。您的内容不是有效的XAML字符串。只需使用DataFormats.Text即可。
如果您使用DataFormats.Xaml,则输入应为基于<Run><Paragraph>之类的XAML元素的有效文档。

您还可以将字符串值直接分配给TextRange.Text属性:

FlowDocument document = new FlowDocument();
string html = "<p> The <b> Markup </b> that is to be converted.</p>";
TextRange textRange = new TextRange(document.ContentStart,document.ContentEnd);
textRange.Text = html;

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...