我需要手动将ListView控件的内容向左滚动。
当我调用scrollIntoView时,只有当要滚动到的项不可见时,它才会自动调用。 ListView将滚动到该项并水平向左滚动。就像我需要的一样。
但是,如果要滚动到的项已经可见,则不会发生任何事情,这就是我需要手动向左滚动的原因。
您可以通过遍历可视树来找到 ListView
的 ScrollViewer
,然后调用 ScrollToLeftEnd
。类似下面这样的代码应该可以解决问题:
private void ScrollListViewToLeft(ListView listView)
{
ScrollViewer listViewScrollViewer = GetVisualChild<ScrollViewer>(listView);
listViewScrollViewer.ScrollToLeftEnd();
}
private static T GetVisualChild<T>(DependencyObject parent) where T : Visual
{
T child = default(T);
int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < numVisuals; i++)
{
Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
child = v as T;
if (child == null)
{
child = GetVisualChild<T>(v);
}
if (child != null)
{
break;
}
}
return child;
}