public async Task <int> getHistoryMessage() { IEnumerable <IAVIMMessage> messages; if (oldestMessage == null) { messages = (await conversation.QueryMessageAsync(limit: MessagePerPage)); } else { messages = (await conversation.QueryMessageAsync( beforeMessageId: oldestMessage.Id, beforeTimeStamp: oldestMessage.ServerTimestamp, limit: MessagePerPage)); } foreach (var message in messages.Reverse()) { if (message is AVIMTextMessage) { var textMessage = (AVIMTextMessage)message; MessageItem newItem = fromIMTextMessage(textMessage); itemList.Insert(0, newItem); } } List <IAVIMMessage> list = messages.ToList(); if (list.Count > 0) { oldestMessage = list[0]; } return(list.Count); }
//上拉到顶部刷新出历史聊天记录 private async void Received_ScrollChanged(object sender, ScrollChangedEventArgs e) { ScrollViewer viewer = e.OriginalSource as ScrollViewer; if (viewer != null) { if (viewer.VerticalOffset == 0 && Conversation != null) { //加载历史记录 var earliestMessages = await Conversation.QueryMessageAsync(limit : 20); List <Message> earliestMessageList = new List <Message>(); foreach (AVIMMessage message in earliestMessages) { earliestMessageList.Add(new Message(message)); } InviteFriend.MessageList.InsertRange(0, earliestMessageList); received.ItemsSource = null; received.ItemsSource = InviteFriend.MessageList; //聚焦最新的消息 received.ScrollIntoView(received.Items.GetItemAt(InviteFriend.MessageList.Count - 1)); } } }