在WP7中,ListBox.ScrollIntoView()似乎无法工作。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在WP7中,ListBox.ScrollIntoView()似乎无法工作。相关的知识,希望对你有一定的参考价值。

我想在 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
        }
    }
答案

MSDN说。

当ItemsSource集合的内容发生变化时,特别是当许多项目被添加到集合中或从集合中删除时,你可能需要在调用ScrollIntoView之前调用UpdateLayout()来让指定的项目滚动到视口。

这可能是你的问题吗?

另一答案

这就是答案。

http:/dotnet-experience.blogspot.com.es201012wpf-listview-scrollintoview.html。

简而言之:项目是异步加载到ListBox中的,所以如果你在CollectionChanged事件(或类似事件)中调用ScrollIntoView(),它还没有任何项目,所以没有滚动。

希望它能帮到你,它肯定帮助了我!;-)

另一答案

ScrollIntoView 绝对有效。我只是在一个空的数据绑定应用程序中添加了一个应用程序按钮,在按钮点击时做如下操作,导致列表滚动。

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

可能是一个事件的问题 selectionChanged? 你有什么东西挂在上面吗?如果你不设置选中的项目,ScrollIntoView能不能用?

另一答案

你可以通过以下方法将新项目始终插入到顶部。

yourItemList.Insert(0, item)。

这样就不需要ScrollIntoView了。也许这能帮到你!

以上是关于在WP7中,ListBox.ScrollIntoView()似乎无法工作。的主要内容,如果未能解决你的问题,请参考以下文章

如何在 WP7 - Phonegap 中播放嵌入的视频?

如何在wp7中找到一个地方的经纬度

如何在 WP7 的 WebBrowser 控件中读取现有的 html 文件?

应用程序中收到的 WP7 推送通知

为啥我在发布模式 WP7 中出现这么多错误

WP7:无法在对 WCF 服务的异步调用中捕获 FaultException