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

Hen*_*y C 10 silverlight wpf windows-phone-7

嘿伙计们,每当将一个新项目添加到itemssource时,我想将列表框滚动条移动到底部,但是如果我将它传递给新添加的项目或索引,则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
        }
    }
Run Code Online (Sandbox Code Playgroud)

Jac*_*Jac 33

MSDN说:

当ItemsSource集合的内容发生更改时,特别是如果在集合中添加或删除了许多项目,则可能需要在调用ScrollIntoView之前调用UpdateLayout()以使指定项目滚动到视口中.

这可能是你的问题吗?


Han*_*ish 5

这是答案:

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

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

希望它有帮助,它肯定对我有帮助!;-)