ソース コード ファイルを解析し、さまざまなテキスト要素 (キーワード、演算子など) に色の書式設定を適用し、Scrollviewer に埋め込まれた Textblock に結果を返すコードがあります。
私が抱えている問題は、スクロール イベントの最後に非常にパフォーマンスが低下することです。つまり、ページ スクロールが停止し、次のタッチ入力を処理するためにアプリケーションが 3 秒間遅れます。ScrollViewer を停止させずにページをスクロールし続けると、パフォーマンスはスムーズになります。ソース テキストを Textblock にロードするだけでテキストの色付けをフォーマットしない場合、パフォーマンスの問題がないことを確認しました。タッチイベント。
色をフォーマットする私の解決策は、テキストを解析し、Runオブジェクトのリストを返し、それらを Textblock Inlineプロパティに追加することです。
Textblock SourceContents; // UI Defined Textblock
...
protected async void LoadSourceCode(StorageFile file)
{
String sourceCode = await ReadFile(file);
FileLoader.Format(sourceCode);
List<Run> formattedText = FileLoader.FormattedText;
SourceContents.Inlines.AddRange(formattedText);
}
問題を処理するより良い方法はありますか?また、多数のインラインを持つテキストブロックを処理する基本的なレンダリング ロジックはありますか?