【发布时间】:2020-04-01 22:42:57
【问题描述】:
我有一个 Xamarin 聊天应用程序,当我收到新消息时,它会滚动到最近收到的消息。 如果我看到必须最近的消息,我希望发生这种情况,否则如果用户滚动到旧消息并且有新消息到达,我希望看到一个按钮(如团队中)说“新”,如果你点击你滚动到最近的消息。
这里的问题是,为了做到这一点,我现在必须能够知道用户在屏幕上看到的消息,至少知道底部屏幕消息或者只是滚动当前位置!在知道我可以自己做之后。
这是我的 OnAppearing 方法:
protected override void OnAppearing()
{
base.OnAppearing();
if (viewModel.Messages.Count == 0)
{
viewModel.LoadItemsCommand.Execute(null);
}
viewModel.Messages.CollectionChanged += (sender, e) =>
{
//GET SCROLL CURRENT POSITION HERE!
var target = viewModel.Messages[viewModel.Messages.Count - 1];
ItemsListView.ScrollTo(target, ScrollToPosition.End, false);
};
}
谢谢大家!
【问题讨论】:
-
您需要向我们展示相关代码。我们不知道您的 UI 是如何构建的,因此很难就如何实现您想要的功能提出任何建议。
-
当然,杰森,谢谢你的提示!
-
我试过了,但我无法使用这个“ScrollViewer”不知道从哪里得到它
-
抱歉,这是一篇 WPF 帖子。
-
@Anand 我正在查看您建议的代码,它看起来像一个解决方案......但它比我需要的要多得多......我已经准备好了一切工作我只是不'不知道当 CollectionChanged 事件触发时如何获取滚动当前位置??如果我不明白这一点,那么我将重做我的方法并实施您建议的方法
标签: xamarin xamarin.forms screen visible items