Wpf 将html转换为FlowDocument

Wpf 将html转换为FlowDocument,wpf,core,flowdocument,Wpf,Core,Flowdocument,我尝试创建一个wpf核心应用程序,它使用从ms Access数据库导入的文本。 有些字段是Access文本字段,文本设置为RTF文本,但实际上它们看起来像html。像这样: 10630981布拉布拉布拉布拉布拉布拉{布拉25-09} 我想用FlowDocumentScrollViewer来显示这个字段,用RichTextBox来编辑。 因为我喜欢在MVVM模式下工作,所以我需要一个转换器来将这个“Html”转换成flowdocument并返回 我已经玩了几天没有得到这个,但还没有成功。 我觉得我

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

10630981布拉布拉布拉布拉布拉布拉{布拉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);
}
FlowDocument文档=新的FlowDocument();
字符串xaml=“要转换的标记。

”; 使用(MemoryStream msDocument=new MemoryStream((new-ascienceoding()).GetBytes(xaml))) { TextRange TextRange=新的TextRange(document.ContentStart,document.ContentEnd); Load(msDocument、DataFormats.Xaml); }
但我仍然得到一个异常,称为XamlParseException:无法创建未知类型“p”


有人能给我一个正确的方向吗?

你使用了错误的数据格式。您的内容不是有效的XAML字符串。只需使用
DataFormats.Text即可。
如果使用
DataFormats.Xaml
,则输入应是基于诸如
等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;
FlowDocument文档=新的FlowDocument();
字符串html=“要转换的标记。

”; TextRange TextRange=新的TextRange(document.ContentStart,document.ContentEnd); Text=html;
不幸的是,这不起作用。我得到的格式标签是纯文本的。不幸的是,你确实要求这样做。你期待什么?是否要查看呈现的HTML文档?问题必须更具体。如果您只想显示HTML标记的内容,则必须首先对其进行解析,以将HTML标记替换为XAML标记,例如,将
替换为
。如果您只有简单的文本,那么这很简单,但可能会变得相当复杂。您应该在NuGet上寻找一个库来将HTML转换为XAML(或直接将HTML转换为
FlowDocument
。正如我在回答
TextRange
中所解释的那样,无法将HTML字符串转换为XAML字符串。您必须这样做。然后
TextRange
可以使用
DataFormats.XAML
显示XAML字符串。我没有测试此库表单NuGet,但您应该尝试一下(或类似的方法)。使用此转换器的结果,该结果应为有效的XAML字符串,并将此结果分配给您发布的代码段的
XAML
变量。然后,该结果应该可以工作。否则,请为您的问题添加更多详细信息。