Вы можете рассчитать это значение из IScrollInfo
Interface. ScrollViewer
Class реализует этот интерфейс и предоставляет соответствующие свойства, которые вам нужно использовать. Насколько я помню, вам необходимо использовать три свойства:
ExtentHeight
- Получает значение, которое содержит вертикальный размер.
ViewportHeight
- Получает значение, которое содержит вертикальный размер окна просмотра содержимого.
VerticalOffset
- Получает значение, содержащее вертикальное смещение прокрученного содержимого.
Для того, чтобы объяснить немного дальше, viewport
относится к видимой области ScrollViewer
и Extent
представляет собой общий размер области прокрутки. VerticalOffset
описывает количество прокручиваемого прокручиваемого содержимого. Используя эти три значения, вы сможете рассчитать свои требуемые значения, относящиеся к ScrollBar
. Попробуйте что-то вроде этого:
double barHeight = ViewportHeight * scrollviewer.ActualHeight/ExtentHeight;
UPDATE >>>
Пожалуйста, обратите внимание, что, как правило, плохая практика, чтобы использовать постоянные значения в вычислениях. По этой причине Microsoft обнаружила множество общих свойств. В вашем случае, я считаю, что вы можете использовать в SystemParameters.VerticalScrollBarButtonHeight
property, хотя вам может понадобиться, чтобы добавить что-то, чтобы приспособить Padding
и/или Margin
значения:
double barHeight = ViewportHeight * (scrollviewer.ActualHeight - 2 *
SystemParameters.VerticalScrollBarButtonHeight)/ExtentHeight;
Вы знаете ... Я просто подумал о чем-то ... вы может даже быть в состоянии получить необходимый палец Height
из этих SystemParameters
... вы могли попробовать SystemParameters.VerticalScrollBarThumbHeight
Property, хотя я не думаю, что он будет работать с пользовательскими ScrollBar
с.
Звучит сложно, для чего нужна эта информация? Чего вы пытаетесь достичь? – musefan
Я пытаюсь переместить 'TextBlock' вверх и вниз в стороне от панели. –
* который является единицей измерения 'ScrollViewer.VerticalOffset'? * ... пикселей. – Sheridan