.Net 4.0 C# WPF 基幹業務アプリを開発しており、(読み取り専用) 大きなテキスト ファイルをユーザーに表示する必要があります。TextBlockSOに記載されているように、オプションではなく、提案されたAvalonEditコントロールを試しました。AvalonEdit.Sample スタンドアロン アプリを実行すると、8,000 行の 4MB ファイルを 1 秒未満でロードできますが、AvalonEditTextEditorを WPF アプリに埋め込むと、前の とほぼ同じ 20 秒かかりTextBlockます。
UI は非常に複雑で、ツリー メニューとフォームのスプリッターがあります。フォームには、サイズ変更可能なゾーンを作成するためのスプリッターがいくつかあり、そのうちの 1 つにタブ コントロールが含まれています。タブ項目の 1 つにTextEditorAvalonEdit からのものがあります。
XAML
<avalonEdit:TextEditor Name="Tbx" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" />
CS
public void ShowFile(string path)
{
Tbx.Text = string.Empty;
ThreadPool.QueueUserWorkItem(o => {
var lines = File.ReadAllLines(path).Join("\n");
Dispatcher.BeginInvoke(() => Tbx.Text = lineas);
});
}
ファイルをロードするとき、私のラップトップ i7 4 コアの CPU 使用率は 33% です。
スタンドアロン アプリとしての AvalonEdit の動作とTextEditor、カスタム WPF アプリ内での AvalonEdit の動作の違いについて何か提案はありますか?
で大きなファイル (10MB、10k 行) をロードする方法はTextEditor?
アップデート:
ビジュアル ツリー:

のプロパティTextEditor:

指摘されたとおりにホストする ScrollViewer を削除しましたTextEditorが、同じようにパフォーマンスが低下します。
更新 2:を新しいウィンドウ
に移動しTextEditorてレイアウトを縮小しましたが、それでもパフォーマンスが低下します。
新しい簡素化されたビジュアル ツリー:

Grid列と行の定義は*.
のプロパティTextEditor:
