Размер полосы прокрутки в ScrollViewer - PullRequest
1 голос
/ 19 мая 2010

Как я могу программно определить ширину или высоту полосы прокрутки в ScrollViewer? Не текущий размер, основанный на текущем состоянии ScrollViewer (поскольку я могу просто проверить видимость полосы прокрутки и вычислить по ViewerPortWidth / Height и ScrollViewer ActualWidth / Height)

Мне нужно знать, какой размер полосы прокрутки может быть основан на шаблонной ширине. По умолчанию 18 (с полем -1). Но мы все знаем, что может произойти, если я использую магическое число 18 в своих вычислениях. Некоторые из моих пользователей могли бы шаблонировать полосы прокрутки в ScrollViewer, тогда бы я был ввернут.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 03 июня 2010

Вы можете использовать SystemParameters.ScrollWidth.

1 голос
/ 13 февраля 2012

Вы можете использовать VisualTreeHelper Silverlight Toolkit следующим образом:

var verticalScrollbar = view.GetVisualChildren().OfType<FrameworkElement>()
        .FirstOrDefault(e => e.Name == "VerticalScrollBar");
var horizontalScrollbar = view.GetVisualChildren().OfType<FrameworkElement>()
        .FirstOrDefault(e => e.Name == "HorizontalScrollBar");
var width = verticalScrollbar == null ? 0 : verticalScrollbar.ActualWidth;
var height = horizontalScrollbar == null ? 0 : horizontalScrollbar.ActualHeight;

где view - это экземпляр ScrollViewer (я думаю, у вас есть экземпляр).

...