如何在滚动查看器中获取可拖动条的高度
本文关键字:获取 拖动 高度 滚动 | 更新日期: 2023-09-27 18:25:09
我正在尝试获取控件顶部和垂直滚动条中间之间的像素距离(不是所有的滚动查看器,只有可以拖动来滚动控件的条)。我不知道该用哪处房产。这是我写的代码:
double barHeight = /*to do*/;
double barUpperEdge = scrollViewer.VerticalOffset;
double distance = barUpperEdge + (barHeight/2);
另一个问题是:scrollViewer.VerticalOffset
的测量单位是什么?如果它不在像素中,我该怎么做?
您可以从IScrollInfo
接口计算该值。ScrollViewer
类实现了这个接口,并公开了您需要使用的相关属性。据我记忆所及,您需要使用三种属性:
ExtentHeight
-获取一个值,该值包含数据块的垂直大小。
ViewportHeight
-获取一个值,该值包含内容视口的垂直大小。
VerticalOffset
-获取一个值,该值包含滚动内容的垂直偏移量。
为了进一步解释,viewport
与ScrollViewer
的可见区域有关,而Extent
表示可滚动区域的总大小。VerticalOffset
描述了可滚动内容已经被滚动的量。使用这三个值,您应该能够计算出与ScrollBar
相关的所需值。试试这样的东西:
double barHeight = ViewportHeight * scrollviewer.ActualHeight / ExtentHeight;
更新>gt>
请注意,在计算中使用常数值通常是不好的做法。正是出于这个原因,微软公开了许多常见的属性。在您的情况下,我相信您可以使用SystemParameters.VerticalScrollBarButtonHeight
属性,尽管您可能需要添加一些内容来适应Padding
和/或Margin
值:
double barHeight = ViewportHeight * (scrollviewer.ActualHeight - 2 *
SystemParameters.VerticalScrollBarButtonHeight) / ExtentHeight;
你知道。。。我刚刚想到了一件事。。。您甚至可以从这些SystemParameters
中获得所需的拇指Height
。。。您可以尝试SystemParameters.VerticalScrollBarThumbHeight
属性,尽管我认为它不能与自定义ScrollBar
s一起使用。