0

我有解析源代码文件并将颜色格式应用于各种文本元素(关键字、运算符等)并将结果返回到嵌入在 Scrollviewer 中的 Textblock 的代码。

我遇到的问题是滚动事件结束时的性能非常差,即页面滚动停止移动,应用程序延迟 3 秒来处理下一个触摸输入。如果我继续滚动页面而不让 ScrollViewer 停止,则性能很流畅。我已经确认在不通过仅将源文本加载到 Textblock 来格式化文本颜色时没有性能问题,所以我假设有底层 UI 逻辑我不知道应用程序何时尝试渲染 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);
}

有没有更好的方法来处理这个问题,是否有处理具有大量内联文本块的底层渲染逻辑?

4

0 回答 0