C# 最初如何计算AvaloneEdit中呈现文本的延伸度?
我试图首先计算AvaloneEdit控件中显示的渲染文本的延伸度,以防止在应用VisualNeelementGenerator后滚动跳跃。我使用的VisualLineElementGenerator在某些行之间添加了额外的垂直空间。我的第一个猜测是在加载编辑器时构造所有可视行,代码如下所示C# 最初如何计算AvaloneEdit中呈现文本的延伸度?,c#,wpf,avalonedit,C#,Wpf,Avalonedit,我试图首先计算AvaloneEdit控件中显示的渲染文本的延伸度,以防止在应用VisualNeelementGenerator后滚动跳跃。我使用的VisualLineElementGenerator在某些行之间添加了额外的垂直空间。我的第一个猜测是在加载编辑器时构造所有可视行,代码如下所示 foreach (var line in TextEditor.Document.Lines) TextEditor.TextArea.TextView.GetOrConstructVisualLine(
foreach (var line in TextEditor.Document.Lines)
TextEditor.TextArea.TextView.GetOrConstructVisualLine(line);
这似乎有效,但并不完全如我所料。当用户滚动时,ExtentHeight值仍在更新。有趣的事实是,最初计算的extendhweight值大于实际值,因此会减小。我还注意到,当最初构造所有可视线时,以及在实际渲染线之后,TextView中的DefaultLineHeight、DefaultBaseline和其他几个值都是不同的。一个可取的方法是计算延伸光,该延伸光在不考虑滚动的情况下保持固定。谢谢 听起来很奇怪。您确定“加载编辑器时”,它已经设置了正确的字体、文本渲染选项等吗?如果这些控件是从父控件继承的和/或通过数据绑定应用的,那么这些值最初可能不可用。这就是问题所在,我发现在构建所有可视行之前,控件需要同时加载和可见。