Определите ширину вертикальной полосы прокрутки в ScrollViewer - PullRequest
4 голосов
/ 06 мая 2010

Я использую ScrollViewer для отображения изображения. Изображение имеет ScaleTransform, установленный как один из его LayoutTransform. Я настроил его так, чтобы он соответствовал ширине изображения в ActualSize ScrollViewer. Моя проблема в том, что если высота изображения требует наличия вертикальной полосы прокрутки (у меня она установлена ​​на Авто), то мое изображение масштабируется чуть-чуть. Я знаю, как определить, присутствует ли полоса прокрутки и как получить правильный масштаб, но я не могу понять, как определить, какова фактическая ширина полосы прокрутки. Я думаю, я мог бы просто догадаться об этом, но я хотел бы что-то, что будет работать, если я позже добавлю стили к своему приложению, что приведет к тому, что полосы прокрутки будут иметь другой размер. Кроме того, я также делаю «Подгонка по высоте», и мне нужно было бы получить высоту горизонтальной полосы прокрутки, когда она была бы видимой (я предполагаю, что ответ на получение ширины вертикальной полосы прокрутки даст получение высоты горизонтальной полосы прокрутки очевидно).

Ответы [ 2 ]

11 голосов
/ 06 мая 2010

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

0 голосов
/ 06 мая 2010

Использование ViewableHeight и ViewableWidth вместо ActualHeight и ActualWidth в моих вычислениях масштабирования вместе с установкой полос прокрутки Visibility вместо Visible вместо Auto работает. Однако я приму другой ответ, который позволяет вместо полосы прокрутки установить значение Авто.

Edit:

ОК, у меня теперь полосы прокрутки установлены на Видимый. Затем я делаю мои вычисления с ViewableHeight и ViewableWidth. Затем я установил полосы прокрутки обратно на Авто. Кажется, это работает, даже если это не так уж и элегантно.

...