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 の特定の部分にも色を付けることができます)
  • 配置 (TextBlocks を必要に応じて配置できます。おそらくそれらの一部でさえありますか?!最後のものについてはわかりません。
  • 太字/斜体/下線/取り消し線などをサポートすることを意味する TextDecorations があります。
  • フォント (カスタム フォントと任意のフォントをサポートしています)

しかし、十分に公平です。実際の RTF ではなく、FlowDocument XAML を保存する必要があると思います。この方法では変換は行われず、数倍速くなるはずです。(DataFormats.xaml を参照)

于 2012-08-21T15:56:26.843 に答える
0

こんにちはVibhoreTextBlock要素は、限られたテキストサポートが必要な場合に使用する必要があります。Labelは、最小限のテキストサポートが必要な場合に使用できます。

FlowDocument要素は、コンテンツの豊富な表示をサポートするリフロー可能なドキュメントのコンテナであるため、TextBlockまたはLabelコントロールを使用するよりもパフォーマンスに大きな影響を与えます。

于 2012-08-21T12:31:51.467 に答える