2010-05-19 59 views
1

如何以編程方式確定ScrollViewer中的滾動條的寬度或高度?不是基於ScrollViewer當前狀態的當前大小(因爲我可以簡單地測試滾動條的可見性並根據ViewerPortWidth/Height和ScrollViewer ActualWidth/Height計算)。ScrollViewer中的滾動條大小

我需要知道什麼尺寸的滾動條的可能基於模板的寬度。默認值是18(保證金爲-1)。但是我們都知道如果我在計算中使用18的魔法數字會發生什麼。我的一些用戶可以在ScrollViewer中模板ScrollBars,然後我就搞定了。

謝謝!

+0

嗨,對不起,我不明白這個問題 - 爲什麼你不能使用例如(ActualWidth - ViewPortWidth)? – 2010-05-21 15:20:08

+0

[確定ScrollViewer中垂直滾動條的寬度]的可能重複(http://stackoverflow.com/questions/2777384/determine-the-width-of-the-vertical-scroll-bar-in-a- scrollviewer) – 2011-08-24 00:56:10

+0

它不是重複的,Silverlight中沒有這樣的SystemParameters屬性 – olegz 2012-02-13 07:00:40

回答

2

您可以使用SystemParameters.ScrollWidth。

+1

Silverlight中SystemParameters上沒有ScrollWidth屬性 – olorin 2013-09-17 15:17:56

1

您可以通過以下方式使用Silverlight工具包的VisualTreeHelper:

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; 

其中觀點是ScrollViewer中的一個實例(我想你說的情況下)。