[英]How to get the height of the draggable bar in a scrollviewer?
我试图获得控件顶部和垂直滚动条中间(不是所有的滚动查看器,只有可以拖动以滚动控件的条)之间的像素距离。 我不知道应该使用哪个属性。 这是我写的代码:
double barHeight = /*to do*/;
double barUpperEdge = scrollViewer.VerticalOffset;
double distance = barUpperEdge + (barHeight/2);
另一个问题:scrollViewer.VerticalOffset的测量单位是scrollViewer.VerticalOffset
? 如果不是像素,该怎么办?
您可以从IScrollInfo
接口计算该值。 ScrollViewer
类实现此接口,并公开您需要使用的相关属性。 据我所记得,您需要利用三个属性:
ExtentHeight
获取一个值,该值包含范围的垂直大小。
ViewportHeight
获取一个包含内容视口的垂直大小的值。
VerticalOffset
获取一个值,该值包含滚动内容的垂直偏移量。
为了进一步说明, viewport
与ScrollViewer
的可见区域有关,而Extent
表示可滚动区域的总大小。 VerticalOffset
描述了可滚动内容已滚动的数量。 使用这三个值,您应该能够计算出与ScrollBar
相关的所需值。 尝试这样的事情:
double barHeight = ViewportHeight * scrollviewer.ActualHeight / ExtentHeight;
更新>>>
请注意,在计算中使用常数通常是一种不好的做法。 正是由于这个原因,Microsoft公开了许多通用属性。 就您而言,我相信您可以利用SystemParameters.VerticalScrollBarButtonHeight
属性 ,尽管您可能需要添加一些内容来容纳Padding
和/或Margin
值:
double barHeight = ViewportHeight * (scrollviewer.ActualHeight - 2 *
SystemParameters.VerticalScrollBarButtonHeight) / ExtentHeight;
你知道...我只是想的东西......你甚至可以让你的拇指需要Height
从这些SystemParameters
...你可以尝试SystemParameters.VerticalScrollBarThumbHeight
属性 ,虽然我不认为它会使用自定义ScrollBar
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.