C# 如何在WPF(XAML)中获取垂直滚动条和水平滚动条
在WPF桌面应用程序中,我有一个列表框,它必须显示垂直滚动条和水平滚动条 根据屏幕分辨率,这两个滚动条可能可见或不可见 在代码中,我想知道它们是都可见还是只有一个,以触发自动滚动 我使用VisualTreeHelper类获取依赖项对象的子对象列表ListBox本身,并提取所有ScrollViewer 以下是方法:C# 如何在WPF(XAML)中获取垂直滚动条和水平滚动条,c#,wpf,C#,Wpf,在WPF桌面应用程序中,我有一个列表框,它必须显示垂直滚动条和水平滚动条 根据屏幕分辨率,这两个滚动条可能可见或不可见 在代码中,我想知道它们是都可见还是只有一个,以触发自动滚动 我使用VisualTreeHelper类获取依赖项对象的子对象列表ListBox本身,并提取所有ScrollViewer 以下是方法: private List<DependencyObject> FindChildren(DependencyObject o, Type childType)
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,但问题是水平滚动条刚好位于最后一个元素的上方,因此用户看不到它。我需要的是当所选元素是最后一个元素时自动向下滚动。看看你的屏幕截图-为什么最后一个项目被剪得这么高?看起来你的水平滚动条很大。有什么奇怪的样式吗?好的,但我仍然需要一种方法来同时获得两个滚动查看器。有什么想法吗?