[英]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.