2011-04-18 6 views
23

나는 ScrollViewer를 가지고 있으며, 수직 스크롤 막대를 보여주고 있습니다. 이제 시스템의 해상도를 변경하면서 스크롤 막대의 너비를 얻고 싶습니다. 나는 One StackOverflow Post을 통해 그들이 SystemParameters.ScrollWidth 프로퍼티를 확인하도록 언급했지만 다시 나는 그들의 도움을 찾는다. 아무도 내 문제를 해결할 수 있도록 도와주세요. 모든 답변을 주시면 감사하겠습니다.C에서 Scrollviewer의 수직 스크롤 막대 폭을 찾는 방법

+2

이 코드를 확인하면 기본 스크롤 막대 너비가 표시됩니다. double scrollBarwidth = SystemParameters.VerticalScrollBarWidth; 그런데 왜 당신이 그것을 찾고 있는지, 어떻게 VerticalScrollBarWidth의 기본 값은 17이라고 생각합니다. – SharpUrBrain

+0

@SharpUrBrain : 그래, 내가 17 픽셀을 주겠다고했는데 DPI 설정에 따라 사진이 바뀌고 있는지 생각하고 있었고 그래서 그것이 내가 찾고있는 이유였다. – Turtleneck

답변

39

나는 SystemParameters.VerticalScrollBarWidth을 찾고 있습니다.

+10

XAML로 표현해야하는 경우 다음과 같이 할 수 있습니다. Darren

+0

값이 double이기 때문에 캐스트 예외가 발생했지만 ColumnDefinition은 GridLength. 내가 사용한 솔루션은 다음과 같습니다. Yaurthek

5

정답인지 확실하지 않습니다. 스크롤바조차도 모든 WPF 컨트롤을 다시 작성할 수 있습니다. 따라서 SystemParameters.VerticalScrollBarWidth은 기본 스크롤 막대로 사용되는 경우에만 작동합니다. 올바른 해결책은 시각적 트리에서 세로 스크롤 막대를 찾아 ActualWidth를 측정하는 것입니다. 가장 정확한 측정입니다.

+0

XAML에서 어떻게 할 것입니까? – Grubsnik

+0

@ Grubsnik 어쩌면 당신이 만들 속성에 바인딩하여 ... 마음에 똑바로 앞으로 아무 것도 나타나지 않습니다. – Noctis

+0

@ Grubsnik XAML을 제공 할 수 있다면 글을 쓸 수 있습니다. 사용자 지정 솔루션이므로 사용자에게 대답하기 어렵고 즉각적인 대답을 제공합니다. – Patrik