WPF:如何以编程方式从ScrollViewer中提取滚动条?

时间:2011-08-23 16:38:07

标签: c# wpf silverlight

我想从我的ScrollViewer中访问滚动条。

我认为它隐藏在ScrollViewer模板的某个地方,有没有办法让我访问,并以编程方式获取它的引用?

所以,如果我有

<ScrollViewer x:Name="myScrollViewer">

在我想要的代码中:

ScrollBar scrollBar = myScrollViewer.GetScrollBar();

(显然,我认为它比那更棘手)

3 个答案:

答案 0 :(得分:14)

我想我明白了......

myScrollViewer.ApplyTemplate();

ScrollBar s = myScrollViewer.Template.FindName("PART_VerticalScrollBar", myScrollViewer) as ScrollBar;

答案 1 :(得分:3)

您需要使用VisualTreeHelper.GetChild方法浏览ScrollViewer的可视树以找到ScrollBar

由于此方法提供了非常低级的功能,并且在高级代码中使用它会很痛苦,您可能希望使用类似LINQ to visual tree的包装器。

答案 2 :(得分:1)

从此博客article获取VisualTreeEnumerator代码。

使用此扩展类: -

ScrollBar s = myScrollViewer.Decendents()
                 .OfType<ScrollBar>()
                 .FirstOrDefault(sb => sb.Name == "PART_VerticalScrollBar");