代码之家  ›  专栏  ›  技术社区  ›  Henry C

ListBox.ScrollIntoView()在WP7中似乎不起作用

  •  9
  • Henry C  · 技术社区  · 15 年前

    嘿,伙计们,我想在每次向itemssource添加新项时都将ListBox滚动条移到底部,但如果我将它传递给新添加项的引用或其索引,则ScrollIntoView()似乎不会做任何事情。是否有人让它起作用,或者有其他关于如何将列表框向下滚动到底部的建议?

    一些代码:

        void Actions_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
        {
            //if a new item was added, set it to the selected item
            if (e.NewItems != null)
            {
                MainListBox.SelectedIndex = e.NewStartingIndex;
    
                //MainListBox.ScrollIntoView(MainListBox.Items.Last());     //todo: this doesnt seem to work
            }
        }
    
    4 回复  |  直到 12 年前
        1
  •  32
  •   Jac    15 年前

    MSDN表示:

    当itemsource集合的内容发生更改时,尤其是在向集合中添加或从集合中删除许多项时,可能需要在调用ScrollIntoView以使指定项滚动到视区之前调用UpdateLayout()。

    那是你的问题吗?

        2
  •  4
  •   Hannish    13 年前

    答案是:

    http://dotnet-experience.blogspot.com.es/2010/12/wpf-listview-scrollintoview.html

    简言之:这些项是异步加载到列表框中的,因此如果在CollectionChanged事件(或类似事件)中调用ScrollIntoView(),它将没有任何项,因此不会滚动。

    希望它能帮助我,它一定能帮助我!;-)

        3
  •  3
  •   Matt Lacey    15 年前

    ScrollIntoView 当然可以。我刚在一个空的数据绑定应用程序中添加了一个应用程序按钮,然后执行下面的点击按钮操作,使列表滚动。

    MainListBox.ScrollIntoView(MainListBox.Items.Last());
    

    可能是上的事件的问题 selectionChanged ?你有没有和那有关的东西?
    如果不设置所选项目,ScrollIntoView是否工作?

        4
  •  -2
  •   user2717906    12 年前

    您可以通过以下方式始终在顶部插入新项目:

    插入(0,项);

    因此,不需要ScrollIntoView。也许这会有帮助!!