【问题标题】:WPF writing html to a rich text boxWPF将html写入富文本框
【发布时间】:2011-04-11 21:25:50
【问题描述】:

我正在使用 C# 代码开发 WPF Windows 应用程序。这是我继承的应用程序。我使用 WPF 的经验有限。 我有一个富文本框控件,用于使用 html 构建电子邮件。有代码可以读取富文本框的内容并将结果作为 html 存储在数据库中。此代码正在运行。我需要编写将 html 写入富文本框的反向操作,以便它显示为文本。

下面是我必须阅读富文本框的代码。

 TextRange xaml = new TextRange(EmailBodyRichTextBox.Document.ContentStart, EmailBodyRichTextBox.Document.ContentEnd);
            MemoryStream ms = new MemoryStream();
            xaml.Save(ms, DataFormats.Xaml);
            string xamlString = ASCIIEncoding.Default.GetString(ms.ToArray());

            string html = HTMLConverter.HtmlFromXamlConverter.ConvertXamlToHtml("<FlowDocument>" + xamlString + "</FlowDocument>");

            html = HttpUtility.HtmlEncode(html);

【问题讨论】:

  • 一个问题可以帮助您获得更好的答案 - 您是在尝试获取 HTML 的源代码,您是在尝试删除所有标记并仅从 HTML 文档中获取纯文本,还是您试图将 HTML 转换为富文本?
  • 是后者。例如,如果文本是粗体,然后保存为 html,它应该在 RT 框中显示为粗体。

标签: c# .net wpf windows


【解决方案1】:

从您上面发布的代码看来,您正在将富文本框中的文本保存为 xaml,然后将 xaml 转换为 HTML。

如果您想反转,则将您的 HTML 转换为 xaml,然后将其加载到富文本框中。

【讨论】:

  • 我遇到问题的部分是获取确切的语法。如果有人可以发布样本或向我指出其中的样本,那就太好了。
【解决方案2】:

要将 RichTextBox 的内容保存为可以保存在数据库中的常规字符串:

string formattedEmail = XamlWriter.Save(EmailBodyRichTextBox.Document);

从字符串重新加载 RichTextBox:

EmailBodyRichTextBox.Document = XamlReader.Parse(formattedEmail);

如果只想将邮件存入数据库,然后重新加载到 RichTextBoxes 中,转换为 HTML 是没有意义的,只会引入转换格式不匹配。

【讨论】:

  • 无法将类型'object'隐式转换为'System.Windows.Documents.FlowDocument'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-29
  • 1970-01-01
相关资源
最近更新 更多