![](/img/trans.png)
[英]How to Load or Bind RTF file and dispaly it in Silverlight RichTextBox or RichTextBoxOverflow
[英]How to import a .rtf file to silverlight 4 richtextbox?
我有一個.rtf文件,並希望將其放入silverlight 4的richtextbox中。不幸的是,我們在silverlight 4 richtextbox中沒有.rtf屬性,我們只有.xaml。
因此,我要做的是創建一個FlowDocument,然后將.rtf加載到此FlowDocument,然后將其格式化為xaml。 然后將其分配給richtextbox。 但是我有一個例外。
如何將.rtf文件導入silverlight 4 richtextbox?
謝謝!
到目前為止,我使用了一個丑陋的解決方案,使用FlowDocument將格式從rtf更改為xaml。 然后刪除SL4 Richtext框中不接受的屬性,如下所示。 它有效,但我討厭它。 我想知道是否有更好的解決方案。
string xaml = String.Empty;
FlowDocument doc = new FlowDocument();
TextRange range = new TextRange(doc.ContentStart, doc.ContentEnd);
using (MemoryStream ms = new MemoryStream())
{
using(StreamWriter sw = new StreamWriter(ms))
{
sw.Write(from);
sw.Flush();
ms.Seek(0, SeekOrigin.Begin);
range.Load(ms, DataFormats.Rtf);
}
}
using(MemoryStream ms = new MemoryStream())
{
range = new TextRange(doc.ContentStart, doc.ContentEnd);
range.Save(ms, DataFormats.Xaml);
ms.Seek(0, SeekOrigin.Begin);
using (StreamReader sr = new StreamReader(ms))
{
xaml = sr.ReadToEnd();
}
}
// remove all attribuites in section and remove attribute margin
int start = xaml.IndexOf("<Section");
int stop = xaml.IndexOf(">") + 1;
string section = xaml.Substring(start, stop);
xaml = xaml.Replace(section, "<Section xml:space=\"preserve\" HasTrailingParagraphBreakOnPaste=\"False\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">");
xaml = xaml.Replace("Margin=\"0,0,0,0\"", String.Empty);
我建議您改為使用免費的VectorLight Rich Text Box控件。
我需要做類似的事情(還沒做...)
我遇到了NRTFTRee ,這是C#RTF解析器,應移植到silverlight。 http://www.codeproject.com/KB/string/nrtftree.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.