2011-04-11 169 views
1

我正在使用C#代码在WPF Windows应用程序上工作。这是我继承的应用程序。我只有有限的经验使用WPF。 我有一个Rich Text Box控件,用于使用html构建电子邮件。有代码可以读取富文本框内容并将结果作为html存储在数据库中。此代码正在工作。我需要编写将HTML写入富文本框的反转,以便显示为文本。WPF将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); 
+0

有一个问题可以帮助您获得更好的答案 - 您是否试图获取HTML的源代码,您是否尝试删除所有标记并从HTML文档中获取纯文本,或者您是否尝试将HTML转换为丰富的文字? – djdanlib 2011-04-11 21:28:58

+0

这是后者。例如,如果文本是粗体,然后保存为html,则它应该在RT框中显示为粗体。 – 2011-04-12 17:29:53

回答

0

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

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

+0

我遇到问题的部分是获取确切的语法。如果有人可以发布样本或将我指向一个样本,那就太棒了。 – 2011-04-12 17:31:31

1

要RichTextBox中的内容保存到一个普通字符串,就可以在数据库中保存:

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

要重新从字符串RichTextBox的:

EmailBodyRichTextBox.Document = XamlReader.Parse(formattedEmail); 

如果只想存储电子邮件在数据库中,然后重新加载到RichTextBoxes,转换为HTML没有意义,它只能引入转换格式不匹配。