public ChatWindow(IWindowServer windowServer, IClient client) { ViewModel = new ChatViewModel(windowServer, client); InitializeComponent(); ViewModel.Messages.CollectionChanged += (sender, e) => { MessageListView.ScrollIntoView(e.NewItems[e.NewItems.Count - 1]); }; var messageCollectionView = CollectionViewSource.GetDefaultView(MessageListView.ItemsSource) as CollectionView; Debug.Assert(messageCollectionView != null, nameof(messageCollectionView) + " != null"); messageCollectionView.Filter = (item) => { var message = (ChatMessage)item; var roomName = message.Room; if (roomName == null || roomName.Equals("[System]")) { return(true); } var selectedItem = JoinedRoomList.SelectedItem; return(roomName.Equals(selectedItem)); }; }
private void ScrollToEnd() { if (ServiceManager.Instance.Dispatcher.Thread != Thread.CurrentThread) { ServiceManager.Instance.Dispatcher.BeginInvoke((Action)(ScrollToEnd)); return; } MessageListView.SelectedIndex = MessageListView.Items.Count - 1; MessageListView.ScrollIntoView(MessageListView.SelectedItem); }
private async void Button_Click(object sender, RoutedEventArgs e) { if (!(string.IsNullOrEmpty(SendBox.Text) || string.IsNullOrWhiteSpace(SendBox.Text))) { MessageInterface.Message messageSent = new MessageInterface.Message(SendBox.Text, true, DateTime.Now); talkWindow.AddMessage(messageSent); MessageInterface.Message messageReceived = new MessageInterface.Message(); messageReceived.Content = await connector.QueryAndStore(messageSent.Content); //messageReceived.Content = Model.Record.replies.Last(); messageReceived.IsSelf = false; messageReceived.SentTime = DateTime.Now; talkWindow.AddMessage(messageReceived); MessageListView.SelectedIndex = MessageListView.Items.Count - 1; MessageListView.ScrollIntoView(MessageListView.SelectedItem); } SendBox.Text = string.Empty; }
private void ScrollToEnd() { //************************************************************************************************************************************ // When Chat conversation is updated then it will scroll to end of chat so recent message should display. //************************************************************************************************************************************ if (ServiceManager.Instance.Dispatcher.Thread != Thread.CurrentThread) { ServiceManager.Instance.Dispatcher.BeginInvoke((Action)(ScrollToEnd)); return; } MessageListView.SelectedIndex = MessageListView.Items.Count - 1; var item = MessageListView.SelectedItem as VATRPChatMessage; if (item != null) { MessageListView.ScrollIntoView(item); } }
public void Scroll(int index) { MessageListView.SelectedIndex = index; MessageListView.ScrollIntoView(MessageListView.SelectedItem); }
public void ScrollStart() { _countZero = 1; MessageListView.SelectedIndex = MessageListView.Items.Count - 1; MessageListView.ScrollIntoView(MessageListView.SelectedItem); }