Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在WPF(XAML)中获取垂直滚动条和水平滚动条_C#_Wpf - Fatal编程技术网

C# 如何在WPF(XAML)中获取垂直滚动条和水平滚动条

C# 如何在WPF(XAML)中获取垂直滚动条和水平滚动条,c#,wpf,C#,Wpf,在WPF桌面应用程序中,我有一个列表框,它必须显示垂直滚动条和水平滚动条 根据屏幕分辨率,这两个滚动条可能可见或不可见 在代码中,我想知道它们是都可见还是只有一个,以触发自动滚动 我使用VisualTreeHelper类获取依赖项对象的子对象列表ListBox本身,并提取所有ScrollViewer 以下是方法: private List<DependencyObject> FindChildren(DependencyObject o, Type childType)

在WPF桌面应用程序中,我有一个列表框,它必须显示垂直滚动条和水平滚动条

根据屏幕分辨率,这两个滚动条可能可见或不可见

在代码中,我想知道它们是都可见还是只有一个,以触发自动滚动

我使用VisualTreeHelper类获取依赖项对象的子对象列表ListBox本身,并提取所有ScrollViewer

以下是方法:

private List<DependencyObject> FindChildren(DependencyObject o, Type childType)
        {
            List<DependencyObject> foundChildren = new List<DependencyObject>();
            if (o != null)
            {
                int childrenCount = VisualTreeHelper.GetChildrenCount(o);
                for (int i = 0; i < childrenCount; i++)
                {
                    var child = VisualTreeHelper.GetChild(o, i);
                    if (child.GetType() != childType)
                    {
                        foundChildren.AddRange(FindChildren(child, childType));
                    }
                    else
                    {
                        foundChildren.Add(child);
                    }
                }
            }
            return foundChildren;
        }
当两个滚动条在UI上都可见时,它总是返回水平滚动条,而我无法获得垂直滚动条


任何帮助和/或建议都将不胜感激。

似乎您只需致电Listbox.ScrollIntoView即可。请不要使用可视化树。是的,问题是:ScrollIntoView不是空的,但需要一个对象项作为参数。我尝试通过这种方式传递SelectedItem,但问题是水平滚动条刚好位于最后一个元素的上方,因此用户看不到它。我需要的是当所选元素是最后一个元素时自动向下滚动。看看你的屏幕截图-为什么最后一个项目被剪得这么高?看起来你的水平滚动条很大。有什么奇怪的样式吗?好的,但我仍然需要一种方法来同时获得两个滚动查看器。有什么想法吗?