我有一个网格,其中有不同高度的行。我注意到当我向下滚动网格时,滚动条拇指会改变它的高度。
经过一番调查,我发现这是由 UI 虚拟化引起的:网格不会创建所有项目,因此它不知道网格的总高度,因此它通过计算平均行高来确定总高度它确实创建的行,并将其乘以行数。这会导致拇指在滚动期间更改其大小,因为虚拟化会创建新项目并销毁不再显示的项目,这会使网格认为总网格大小已更改。
我的问题:有没有一种方法可以使用自己的启发式方法自己设置滚动拇指大小?最好采用非侵入式的方式,这样我就不必重新模板化我的控件。禁用虚拟化不是一种选择。
注意:我使用的是 DevExpress DataGrid,但这种行为也发生在 WPF DataGrid 上。