我想从我的ScrollViewer中访问滚动条。
我认为它隐藏在ScrollViewer模板的某个地方,有没有办法让我访问,并以编程方式获取它的引用?
所以,如果我有
<ScrollViewer x:Name="myScrollViewer">
在我想要的代码中:
ScrollBar scrollBar = myScrollViewer.GetScrollBar();
(显然,我认为它比那更棘手)
答案 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");