WPF Scrollviewer滚动到子元素不工作
这就是我要做的。我有一个Scrollviewer,里面嵌套着UserControls,嵌套在其他UserControls、网格、StackPanel和其他容器中。当我点击一个按钮,在这个层次结构中的某个地方添加另一个孩子时,我想滚动查看这个孩子。功能代码如下:WPF Scrollviewer滚动到子元素不工作,wpf,scroll,scrollviewer,children,Wpf,Scroll,Scrollviewer,Children,这就是我要做的。我有一个Scrollviewer,里面嵌套着UserControls,嵌套在其他UserControls、网格、StackPanel和其他容器中。当我点击一个按钮,在这个层次结构中的某个地方添加另一个孩子时,我想滚动查看这个孩子。功能代码如下: public static void ScrollParentNamedScrollViewerDown(DependencyObject child, string strTargetParent, DependencyObject
public static void ScrollParentNamedScrollViewerDown(DependencyObject child, string strTargetParent, DependencyObject newStartPoint = null)
{
if(child == null) return;
if(newStartPoint == null) newStartPoint = child;
ScrollViewer scvPotentialTarget = GetParentOfType<ScrollViewer>(newStartPoint);
if (scvPotentialTarget == null) return;
if (scvPotentialTarget.Name != strTargetParent)
{
ScrollParentNamedScrollViewerDown(child, strTargetParent, scvPotentialTarget);
}
else
{
UIElement scrollTarget = child as UIElement;
if (scrollTarget == null)
scvPotentialTarget.ScrollToBottom();
else{
Point pTarget = scrollTarget.TranslatePoint(new Point(0, 0), scvPotentialTarget);
if (pTarget == null)
scvPotentialTarget.ScrollToBottom();
else
scvPotentialTarget.ScrollToVerticalOffset(pTarget.Y);
}
}
其中gbSubWindow是嵌套UserControl底部以前为空的隐藏扩展器
由于某些原因,当我执行TranslatePoint函数时,我得到的垂直偏移值低得离谱——我的scrollviewer scrollheight接近800,我添加了一个子控件,它将显示在2个大的子控件下面的最底部,我得到的值在160ish范围内
有人知道这里发生了什么吗?如果答案是这样的话
在控件上显示视图
由于UserControl源于FrameworkElement,因此它应该可以工作。
我只将其用于ListItem
如果答案是这样的话
在控件上显示视图
由于UserControl源于FrameworkElement,因此它应该可以工作。
我只将其用于ListItem
控件上的BringIntoView不知道此功能。控件上的ThanksBingtoView未意识到此功能。感谢被标记为答案,因为显然我又在试图重新发明轮子。也就是说,如果有人在看它,并且能告诉我为什么我会从TranslatePoint得到不正确的值,我仍然很好奇。标记为答案,因为显然我再次尝试重新发明轮子。也就是说,如果有人在看它,并且能告诉我为什么我会从TranslatePoint得到不正确的值,我仍然很好奇。
gbSubWindow.Visibility = System.Windows.Visibility.Visible;
gbSubWindow.Content = uc;
ScrollParentNamedScrollViewerDown(gbSubWindow, "OmsWindowScrollViewer");