2010-05-19 8 views
1

ScrollViewer에서 스크롤 막대의 너비 또는 높이를 프로그래밍 방식으로 결정하려면 어떻게해야합니까? ScrollViewer의 현재 상태를 기반으로 한 현재 크기가 아닙니다 (단순히 스크롤 막대의 가시성을 테스트하고 ViewerPortWidth/Height 및 ScrollViewer ActualWidth/Height에 대해 계산할 수 있기 때문입니다).ScrollViewer의 Scrollbar 크기

스크롤 막대의 크기가 일 수있는 크기를 알아야 템플릿 기반 너비를 기반으로합니다. 기본값은 18입니다 (여백 -1 포함). 그러나 우리는 계산에서 18이라는 매직 넘버를 사용하면 어떤 일이 벌어 질지 알 수 있습니다. 내 사용자 중 일부는 ScrollViewer에서 스크롤 막대를 템플릿으로 만들 수 있습니다.

감사합니다.

+0

안녕하세요, 죄송합니다. 문제를 이해하지 못합니다. 왜 사용할 수 없습니까? (ActualWidth - ViewPortWidth)? –

+0

가능한 [ScrollViewer에서 수직 스크롤 막대의 너비를 결정] 중복 (http://stackoverflow.com/questions/2777384/determine-the-width-of-the-vertical-scroll-bar-in-a- scrollviewer) –

+0

중복되지 않습니다. Silverlight에 SystemParameters 속성이 없습니다. – olegz

답변

2

SystemParameters.ScrollWidth를 사용할 수 있습니다.

+1

Silverlight에서 SystemParameters에 ScrollWidth 속성이 없습니다. – olorin

1

다음과 같은 방법으로 실버 라이트 툴킷의 VisualTreeHelper를 사용할 수 있습니다

보기가에서 ScrollViewer의 인스턴스 (난 당신이 인스턴스를 가지고 생각을)입니다
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; 

.