c# - 检测,ScrollViewer的ScrollBar是否可见

标签 c# wpf scrollviewer

我有一个 TreeView。现在,我想检测垂直滚动条是否可见。 当我用

尝试时
var visibility = this.ProjectTree.GetValue(ScrollViewer.VerticalScrollBarVisibilityProperty)

(其中 this.ProjectTree 是 TreeView) 为了能见度,我总是使用 Auto。

我该如何检测 ScrollBar 是否有效可见?

谢谢。

最佳答案

您可以使用 ComputedVerticalScrollBarVisibility 属性。但为此,您首先需要在 TreeView 的模板中找到 ScrollViewer。为此,您可以使用以下扩展方法:

    public static IEnumerable<DependencyObject> GetDescendants(this DependencyObject obj)
    {
        foreach (var child in obj.GetChildren())
        {
            yield return child;
            foreach (var descendant in child.GetDescendants())
            {
                yield return descendant;
            }
        }
    }

像这样使用它:

var scrollViewer = ProjectTree.GetDescendants().OfType<ScrollViewer>().First();
var visibility = scrollViewer.ComputedVerticalScrollBarVisibility;

关于c# - 检测,ScrollViewer的ScrollBar是否可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20048431/

相关文章:

c# - 如何使特定行的 WPF 数据网格单元格只读?

asp.net - 在渲染为位图之前缩放 WPF 内容

c# - Scrollviewer 中的 UWP Canvas 像鼠标输入一样处理笔输入

c# - ScrollViewer:当 ComputedHorizo​​ntalScrollBarVisibility 改变时通知

c# - 看似没有错误的非工作 C# 代码

c# - asp.net c# 使Web服务获取而不是发布

c# - RichText框未在带有MVVM的WPF中显示大文本

c# - Prism MVVM : 'No parameterless constructor defined for type' Error when binding ViewModel to View

c# - StackPanel 的方向在 ItemsControl (WPF) 中不起作用

silverlight - 如何以编程方式在滚动查看器中添加网格