簡體   English   中英

如何獲取scrollviewer中可拖動欄的高度?

[英]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獲取一個值,該值包含滾動內容的垂直偏移量。

為了進一步說明, viewportScrollViewer的可見區域有關,而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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM