我有解析源代码文件的代码,并将颜色格式应用于各种文本元素(关键字,运算符等),并将结果返回到Scrollviewer中嵌入的Textblock。
我遇到的问题是滚动事件的 end 表现极差,即页面滚动停止移动,应用程序滞后3秒钟以处理下一个触摸输入。如果我继续滚动浏览页面而不让ScrollViewer停止,那么性能会很顺利。我已经确认没有通过将源文本加载到Textblock中来格式化文本着色没有性能问题,所以我假设当应用程序尝试在文本块之后呈现Textblock时,我不知道有底层UI逻辑触摸事件。
我格式化颜色的解决方案是解析文本并返回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);
}
是否有更好的方法来处理问题,是否有基础渲染逻辑处理具有大量内联的文本块?