Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 最初如何计算AvaloneEdit中呈现文本的延伸度?_C#_Wpf_Avalonedit - Fatal编程技术网

C# 最初如何计算AvaloneEdit中呈现文本的延伸度?

C# 最初如何计算AvaloneEdit中呈现文本的延伸度?,c#,wpf,avalonedit,C#,Wpf,Avalonedit,我试图首先计算AvaloneEdit控件中显示的渲染文本的延伸度,以防止在应用VisualNeelementGenerator后滚动跳跃。我使用的VisualLineElementGenerator在某些行之间添加了额外的垂直空间。我的第一个猜测是在加载编辑器时构造所有可视行,代码如下所示 foreach (var line in TextEditor.Document.Lines) TextEditor.TextArea.TextView.GetOrConstructVisualLine(

我试图首先计算AvaloneEdit控件中显示的渲染文本的延伸度,以防止在应用VisualNeelementGenerator后滚动跳跃。我使用的VisualLineElementGenerator在某些行之间添加了额外的垂直空间。我的第一个猜测是在加载编辑器时构造所有可视行,代码如下所示

foreach (var line in TextEditor.Document.Lines)
  TextEditor.TextArea.TextView.GetOrConstructVisualLine(line);

这似乎有效,但并不完全如我所料。当用户滚动时,ExtentHeight值仍在更新。有趣的事实是,最初计算的extendhweight值大于实际值,因此会减小。我还注意到,当最初构造所有可视线时,以及在实际渲染线之后,TextView中的DefaultLineHeight、DefaultBaseline和其他几个值都是不同的。一个可取的方法是计算延伸光,该延伸光在不考虑滚动的情况下保持固定。谢谢

听起来很奇怪。您确定“加载编辑器时”,它已经设置了正确的字体、文本渲染选项等吗?如果这些控件是从父控件继承的和/或通过数据绑定应用的,那么这些值最初可能不可用。这就是问题所在,我发现在构建所有可视行之前,控件需要同时加载和可见。