WPF树视图是否自动滚动到底
本文关键字:滚动 视图 是否 WPF | 更新日期: 2023-09-27 18:00:53
WPF默认的TreeView会自动滚动到节点的底部,因为我们需要显示树视图的顶部视图。如何做到这一点?
此外,我也无法通过走下视觉树来获得滚动查看器。
预先选择顶部节点并调用TreeViewItem。对所选更改的事件执行BringIntoView方法。调用TreeView。ItemContainerGenerator。ContainerFromItem(e.NewValue(以获取TreeViewItem。
这段代码非常粗糙。获取TreeViewItem的关键。BringIntoView((将一个项目滚动到顶部,首先将TreeView滚动到底部而不是顶部。为此,我们需要首先访问TreeView控件模板中的ScrollViewer。海事组织的许多混乱,从一开始就应该在框架中提供。
在这种情况下,您的项目控件应该是您试图到达顶部的TreeViewItem。uxTree控件是TreeView。
item.IsSelected = true;
ScrollViewer scroller = (ScrollViewer)this.FindVisualChildElement(this.uxTree, typeof(ScrollViewer));
scroller.ScrollToBottom();
item.BringIntoView();
private FrameworkElement FindVisualChildElement(DependencyObject element, Type childType)
{
int count = VisualTreeHelper.GetChildrenCount(element);
for (int i = 0; i < count; i++)
{
var dependencyObject = VisualTreeHelper.GetChild(element, i);
var fe = (FrameworkElement)dependencyObject;
if (fe.GetType() == childType)
{
return fe;
}
FrameworkElement ret = null;
if (fe.GetType().Equals(typeof(ScrollViewer)))
{
ret = FindVisualChildElement((fe as ScrollViewer).Content as FrameworkElement, childType);
}
else
{
ret = FindVisualChildElement(fe, childType);
}
if (ret != null)
{
return ret;
}
}
return null;
}