Wpf 如何避免自动显示新的列表框项目

Wpf 如何避免自动显示新的列表框项目,wpf,listbox,Wpf,Listbox,我的WPF应用程序中确实有一个列表框。当用户滚动到顶部时,新项目到达(这是一个ObversableCollection),新项目将显示为新的顶部项目 我可以改变这种行为吗?当新项目到达时,滚动位置不会改变,这意味着新项目在原始顶部项目上方看不见。看起来您在ObservableCollection的顶部插入了新项目,因此它们显示在列表框的顶部。如果将它们添加到源代码的末尾,则它们将显示在列表框的末尾。或者,如果您有一些排序(例如通过CollectionViewSource),那么您需要修改排序逻辑

我的WPF应用程序中确实有一个列表框。当用户滚动到顶部时,新项目到达(这是一个ObversableCollection),新项目将显示为新的顶部项目


我可以改变这种行为吗?当新项目到达时,滚动位置不会改变,这意味着新项目在原始顶部项目上方看不见。

看起来您在ObservableCollection的顶部插入了新项目,因此它们显示在列表框的顶部。如果将它们添加到源代码的末尾,则它们将显示在列表框的末尾。或者,如果您有一些排序(例如通过CollectionViewSource),那么您需要修改排序逻辑,以在末尾显示添加的项目。

有一个ScrollIntoView方法,但它不会保留列表中某个位置。如果项目位于下方,则将其放在最后一个位置。因此,如果你最后一次看到“合适”的东西,把拳头推开,就好像物品在它下面一样,把它带到最后一个位置。我有一个简单的3个列表,我把ListView的高度设为40,所以它只有2个空间。以下内容将第一项推到了视图之外

ScrollIntoView(liIDName[2])


如果Height=Auto,则更难确定正确的最后一项,但这是一种可能的方法。

它是按日期排序的,最新的一项位于顶部(这对于Twitter客户端来说是有意义的)。因此,在这种情况下不可能更改排序:(嗯-这可能确实是我可以走的一条路。无论如何,我在Oberservable集合的collection changed事件中,我可以确定新添加的项目是否比当前最上面的项目具有更新的日期-如果是这样,在显示完成后,我将再次滚动到查看现在的第二个项目。这与新项目计数器一起,我将始终知道我需要滚动到的索引。这是我将尝试的内容-如果(以及具体如何)我让它按预期工作,将提供反馈。谢谢:)