我正在使用 LongListMultiSelector 来显示消息。最新消息位于底部 - 就像在信使中一样。我知道 ListHeaderTemplate 中有一个按钮,它允许我加载较早的消息并将它们插入到列表的顶部 ( ObservableCollection.Insert(0, item);
)。
插入有效,但看起来列表会自动滚动到最后插入的项目 - 它实际上不滚动,但感觉就像滚动,因为在插入后,新项目会显示,但我宁愿寻找一个解决方案保持插入新项目之前的第一个项目可见,并且我必须再次垂直滚动到新顶部才能再次到达列表标题。
有什么线索吗?
编辑 1
考虑一下,oldFirstItem
是当前的第一项,然后我在该项前面插入一个新项。现在新项目成为第一项,并且由于滚动位置没有改变,因此新项目是可见的:感觉就像列表滚动到新插入的项目,但它只是将项目 1 向下推到 n 。我想要的是,它将所有新项目向上推 - 进入用户看不到的区域 - 并oldFirstItem
在可见项目的顶部。使用 ScrollTo 使该列表跳转。
编辑 2 我添加了一张图片,试图展示我想要实现的目标。红线上方的区域是不可见的。