将RTF转换为FlowDocument的最快方法

时间:2012-08-21 12:22:37

标签: wpf flowdocument

将RTF转换为FlowDocument的最快方法是什么?我将RTF存储为普通字符串然后重新加载,我使用以下方法,

FlowDocument document = new FlowDocument();
document.SetValue(FlowDocument.TextAlignmentProperty, TextAlignment.Left);

TextRange content = new TextRange(document.ContentStart, document.ContentEnd);

if (content.CanLoad(DataFormats.Rtf) && string.IsNullOrEmpty(rtf) == false)
{
     // If so then load it with RTF
     byte[] valueArray = Encoding.ASCII.GetBytes(rtf);
     using (MemoryStream stream = new MemoryStream(valueArray))
     {
         content.Load(stream, DataFormats.Rtf);
     }
}

但这种方法很慢。我需要加载许多RTF(大约1000)。什么可以让这个过程快速进行?有没有其他方法来加载Flowdocument?

2 个答案:

答案 0 :(得分:1)

你真的需要定义你真正需要的东西。 TextBlock一点都不弱。 它提供的东西;)。

  • 颜色(背景/前景+你甚至可以为TextBlock的特定部分着色)
  • 对齐(您可以根据需要对齐TextBlocks,甚至可能是其中的一部分?!不确定最后一个。
  • 它有TextDecorations,这意味着它支持粗体/斜体/下划线/删除线等。
  • 字体(是的,它支持自定义字体和您想要的任何字体)

但还算公平。我认为你应该存储FlowDocument XAML而不是实际的RTF。这样就不会有转换,它应该快几倍。 (参见DataFormats.xaml)

答案 1 :(得分:0)

Hello Vibhore当需要有限的文本支持时,应该使用TextBlock元素,当需要最小的文本支持时,可以使用Label。

FlowDocument元素是支持丰富的内容呈现的可重新流动文档的容器,因此比使用TextBlock或Label控件具有更大的性能影响。