2012-03-29 66 views
0

我在我的WPF应用程序中有一个列表框。当用户滚动到顶部并且新物品到达时(这是ObversableCollection),新的物品将显示为新的顶部物品。如何避免自动显示新的ListBox项目

我可以改变的方式的行为,当新邮件到达滚动位置不改变意味着新的一个是看不见原来的顶部项目之上。

回答

0

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

+0

它是按日期排序 - 最新的一个在顶部(这对Twitter客户端来说是有意义的)。所以在这种情况下改变排序是不可能的:( – 2012-03-29 11:04:13

0

有一个ScrollIntoView方法,但它不会保留位置,只是它在列表中的某处。如果该项目低于它,则放入最后位置。所以如果你把最后一次“正确”的时间放在视图中,把拳头推下来,就好像物品在下面一样,把它带到最后的位置。我有一个简单的列表3,我使ListView Height = 40,所以它只有2的空间。以下将第一个项目推出视图。

lvKDNames.ScrollIntoView(liIDName [2]);

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

+0

嗯 - 这可能确实是我可以去的一种方式。无论如何,我在Oberservable Collection的收集改变事件中,我可以确定新添加的项目是否有更新的日期而不是当前的第一个 - 如果在显示完成后我会再次滚动查看第二个。这与一个新项目的计数器,我总是会知道我需要滚动到的索引 – 2012-03-29 14:07:25

+0

这是我会尝试的 - 将提供反馈意见,如果(以及如何)我得到它按预期工作。谢谢:) – 2012-03-29 14:09:09