我正在尝试初始计算AvalonEdit控件中显示的渲染文本的ExtentHeight,以防止在应用VisualLineElementGenerators后滚动跳转。我使用的VisualLineElementGenerator在某些行之间添加了额外的垂直空间。我的第一个猜测是在加载编辑器时构造所有视觉线,代码如下所示。
foreach (var line in TextEditor.Document.Lines)
TextEditor.TextArea.TextView.GetOrConstructVisualLine(line);
它似乎有效,但并不完全像我期望的那样。用户滚动时,ExtentHeight值仍会更新。有趣的是,最初计算的ExtendHeight值大于实际值,因此它会减少。我还注意到,当最初构造所有可视线并且在实际渲染线之后,DefaultLineHeight,DefaultBaseline和TextView中的其他几个值是不同的。理想的是计算无论滚动如何都保持固定的ExtentHeight。谢谢!