3

将 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?

4

2 回答 2

1

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

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

但足够公平。我认为您应该存储 FlowDocument XAML 而不是实际的 RTF。这样就不会发生转换,并且应该快几倍。(请参阅 DataFormats.xaml)

于 2012-08-21T15:56:26.843 回答
0

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

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

于 2012-08-21T12:31:51.467 回答