【问题标题】:WPF : How to scroll a ListView control horizontal?WPF:如何水平滚动 ListView 控件?
【发布时间】:2011-02-09 04:08:40
【问题描述】:

我需要手动将 ListView 控件的内容滚动到左侧。

当我调用 scrollIntoView 时会自动调用它,但前提是要滚动到的项目不可见。 ListView 将滚动到项目并水平滚动到左侧。就像我需要的那样。

但是如果要滚动到的项目已经可见,则不会发生任何事情,这就是我需要手动向左滚动的原因。

【问题讨论】:

  • 如果项目已经可见,自动滚动必须显示什么?

标签: wpf listview


【解决方案1】:

您可以通过遍历可视化树找到ListViewScrollViewer,然后调用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;
}

【讨论】:

    猜你喜欢
    • 2010-09-26
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 2019-08-24
    相关资源
    最近更新 更多