ScrollViewer中的滚动条大小

时间:2010-05-19 14:45:42

标签: silverlight silverlight-4.0 scrollviewer

如何以编程方式确定ScrollViewer中滚动条的宽度或高度?不是基于ScrollViewer当前状态的当前大小(因为我可以简单地测试滚动条的可见性并根据ViewerPortWidth / Height和ScrollViewer ActualWidth / Height进行计算)。

我需要知道Scrollbar的可以基于模板化宽度的大小。默认值为18(边距为-1)。但是我们都知道如果我在计算中使用18的幻数会发生什么。我的一些用户可以在ScrollViewer中模拟Scrollbars,然后我就搞砸了。

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用SystemParameters.ScrollWidth。

答案 1 :(得分:1)

您可以通过以下方式使用Silverlight Toolkit的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;

其中 view 是ScrollViewer的一个实例(我猜你已经得到了实例)。