渲染性能不佳滚动格式化文本块(Surface WinRT)

时间:2013-10-03 15:14:42

标签: c# performance windows-runtime scrollviewer textblock

我有解析源代码文件的代码,并将颜色格式应用于各种文本元素(关键字,运算符等),并将结果返回到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);
}

是否有更好的方法来处理问题,是否有基础渲染逻辑处理具有大量内联的文本块?

0 个答案:

没有答案