在绑定后滚动到长列表选择器中的特定项

3

我正在使用Longlistselector来绑定聊天消息。在绑定后,我需要显示最后一条消息。但默认情况下,它是显示在顶部的。我尝试了滚动到最后一项 "(ScrollTo(lastmessage))",但它不起作用。有人能提供解决方案吗?


1
也许AnimateTo()方法会有所帮助。 - KrazZ88
2
ScrollTo() 应该可以正常工作,但请注意它使用从 Object 继承的 Equals() 方法,因此它可能会在对象上执行实例比较... 你确定你的 lastmessage 对象真的是列表中相同的实例吗? - Pedro Lamas
3个回答

2

其他人在 ListBox 上调用 UpdateLayout(),然后再调用 ScrollIntoView(),也获得了成功。


2
这个可行,我在 ScrollTo(item) 之前加了它,不再出现异常了,谢谢你! - Martin Suchan

1

你尝试过使用AnimateTo()并将其传递给列表中的最后一项吗。

或者,您可以查询控件的可视树并访问内部[模板]ListBox的ScrollViewer,并调用ScrollToVerticalOffset


AnimateTo()被标记为ObsoleteAttribute,源代码中可以看到它所做的就是调用ScrollTo()方法。 - Pedro Lamas

0

尝试将SelectedItemIndex设置为最后一项的索引。


选定的项不会自动显示在视图中,因此这样做不起作用。 - Matt Lacey
我说的是索引(Index),不是项(Item)。当您更改所选索引时,它会滚动到该位置。ListBox 的工作正常。 - Roman Golenok
1
Deployment.Current.Dispatcher.BeginInvoke(() => { ScrollTo(LastItem); }); 我们需要添加一个线程来滚动。 - kishore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接